cryptopp 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. data/.gitignore +8 -0
  2. data/MIT-LICENSE +22 -0
  3. data/README +7 -0
  4. data/Rakefile +42 -0
  5. data/cryptopp.gemspec +199 -0
  6. data/ext/.gitignore +5 -0
  7. data/ext/Rakefile +16 -0
  8. data/ext/ciphers.cpp +1402 -0
  9. data/ext/cryptopp.cpp +285 -0
  10. data/ext/cryptopp_ruby_api.h +139 -0
  11. data/ext/defs/block_modes.def +10 -0
  12. data/ext/defs/checksums.def +10 -0
  13. data/ext/defs/ciphers.def +136 -0
  14. data/ext/defs/hashes.def +78 -0
  15. data/ext/defs/hmacs.def +54 -0
  16. data/ext/defs/paddings.def +9 -0
  17. data/ext/defs/rngs.def +7 -0
  18. data/ext/digests.cpp +1120 -0
  19. data/ext/extconf.rb +39 -0
  20. data/ext/j3way.cpp +22 -0
  21. data/ext/j3way.h +29 -0
  22. data/ext/jadler32.h +32 -0
  23. data/ext/jaes.cpp +22 -0
  24. data/ext/jaes.h +31 -0
  25. data/ext/jarc4.cpp +22 -0
  26. data/ext/jarc4.h +37 -0
  27. data/ext/jbase.cpp +172 -0
  28. data/ext/jbase.h +92 -0
  29. data/ext/jbasiccipherinfo.h +74 -0
  30. data/ext/jblowfish.cpp +22 -0
  31. data/ext/jblowfish.h +29 -0
  32. data/ext/jcamellia.cpp +24 -0
  33. data/ext/jcamellia.h +33 -0
  34. data/ext/jcast128.cpp +22 -0
  35. data/ext/jcast128.h +31 -0
  36. data/ext/jcast256.cpp +22 -0
  37. data/ext/jcast256.h +31 -0
  38. data/ext/jcipher.cpp +112 -0
  39. data/ext/jcipher.h +42 -0
  40. data/ext/jcipher_t.h +469 -0
  41. data/ext/jconfig.h +127 -0
  42. data/ext/jconstants.h +189 -0
  43. data/ext/jcrc32.h +32 -0
  44. data/ext/jdes.cpp +22 -0
  45. data/ext/jdes.h +31 -0
  46. data/ext/jdes_ede2.cpp +22 -0
  47. data/ext/jdes_ede2.h +31 -0
  48. data/ext/jdes_ede3.cpp +22 -0
  49. data/ext/jdes_ede3.h +31 -0
  50. data/ext/jdes_xex3.cpp +22 -0
  51. data/ext/jdes_xex3.h +31 -0
  52. data/ext/jdiamond2.cpp +22 -0
  53. data/ext/jdiamond2.h +31 -0
  54. data/ext/jdiamond2lite.cpp +22 -0
  55. data/ext/jdiamond2lite.h +31 -0
  56. data/ext/jexception.h +20 -0
  57. data/ext/jgost.cpp +22 -0
  58. data/ext/jgost.h +31 -0
  59. data/ext/jhash.cpp +92 -0
  60. data/ext/jhash.h +54 -0
  61. data/ext/jhash_t.h +121 -0
  62. data/ext/jhaval.h +64 -0
  63. data/ext/jhelpers.cpp +90 -0
  64. data/ext/jhelpers.h +38 -0
  65. data/ext/jhmac.cpp +44 -0
  66. data/ext/jhmac.h +34 -0
  67. data/ext/jhmac_t.h +125 -0
  68. data/ext/jidea.cpp +22 -0
  69. data/ext/jidea.h +31 -0
  70. data/ext/jmarc4.cpp +22 -0
  71. data/ext/jmarc4.h +37 -0
  72. data/ext/jmars.cpp +22 -0
  73. data/ext/jmars.h +31 -0
  74. data/ext/jmd2.h +56 -0
  75. data/ext/jmd4.h +56 -0
  76. data/ext/jmd5.h +56 -0
  77. data/ext/jpanamacipher.cpp +32 -0
  78. data/ext/jpanamacipher.h +46 -0
  79. data/ext/jpanamahash.h +44 -0
  80. data/ext/jrc2.cpp +44 -0
  81. data/ext/jrc2.h +39 -0
  82. data/ext/jrc5.cpp +22 -0
  83. data/ext/jrc5.h +31 -0
  84. data/ext/jrc6.cpp +22 -0
  85. data/ext/jrc6.h +31 -0
  86. data/ext/jripemd160.h +113 -0
  87. data/ext/jsafer.cpp +32 -0
  88. data/ext/jsafer.h +42 -0
  89. data/ext/jseal.cpp +32 -0
  90. data/ext/jseal.h +42 -0
  91. data/ext/jserpent.cpp +22 -0
  92. data/ext/jserpent.h +31 -0
  93. data/ext/jsha.h +122 -0
  94. data/ext/jshacal2.cpp +22 -0
  95. data/ext/jshacal2.h +31 -0
  96. data/ext/jshark.cpp +24 -0
  97. data/ext/jshark.h +33 -0
  98. data/ext/jsink.cpp +90 -0
  99. data/ext/jsink.h +154 -0
  100. data/ext/jskipjack.cpp +22 -0
  101. data/ext/jskipjack.h +31 -0
  102. data/ext/jsquare.cpp +22 -0
  103. data/ext/jsquare.h +31 -0
  104. data/ext/jstream.cpp +8 -0
  105. data/ext/jstream.h +20 -0
  106. data/ext/jstream_t.h +175 -0
  107. data/ext/jtea.cpp +22 -0
  108. data/ext/jtea.h +31 -0
  109. data/ext/jtiger.h +52 -0
  110. data/ext/jtwofish.cpp +22 -0
  111. data/ext/jtwofish.h +31 -0
  112. data/ext/jwhirlpool.h +52 -0
  113. data/ext/utils.cpp +8 -0
  114. data/extras/parser_c.rb +114 -0
  115. data/test/ciphers_test.rb +37 -0
  116. data/test/data/ciphers/3desval.dat +7 -0
  117. data/test/data/ciphers/3wayval.dat +6 -0
  118. data/test/data/ciphers/arc4.dat +8 -0
  119. data/test/data/ciphers/blowfish.dat +5 -0
  120. data/test/data/ciphers/camellia.dat +7 -0
  121. data/test/data/ciphers/cast128v.dat +5 -0
  122. data/test/data/ciphers/cast256v.dat +5 -0
  123. data/test/data/ciphers/descert.dat +198 -0
  124. data/test/data/ciphers/diamond.dat +9 -0
  125. data/test/data/ciphers/gostval.dat +10 -0
  126. data/test/data/ciphers/ideaval.dat +13 -0
  127. data/test/data/ciphers/marsval.dat +11 -0
  128. data/test/data/ciphers/panamac.dat +7 -0
  129. data/test/data/ciphers/rc2val.dat +10 -0
  130. data/test/data/ciphers/rc5val.dat +7 -0
  131. data/test/data/ciphers/rc6val.dat +8 -0
  132. data/test/data/ciphers/rijndael.dat +11 -0
  133. data/test/data/ciphers/saferval.dat +27 -0
  134. data/test/data/ciphers/seal.dat +3 -0
  135. data/test/data/ciphers/serpentv.dat +11 -0
  136. data/test/data/ciphers/shacal2.dat +7 -0
  137. data/test/data/ciphers/sharkval.dat +9 -0
  138. data/test/data/ciphers/skipjack.dat +3 -0
  139. data/test/data/ciphers/squareva.dat +10 -0
  140. data/test/data/ciphers/twofishv.dat +11 -0
  141. data/test/data/digests/adler32.dat +8 -0
  142. data/test/data/digests/crc32.dat +10 -0
  143. data/test/data/digests/haval.dat +4 -0
  144. data/test/data/digests/havalcer.dat +23 -0
  145. data/test/data/digests/md2.dat +9 -0
  146. data/test/data/digests/md4.dat +9 -0
  147. data/test/data/digests/md5.dat +9 -0
  148. data/test/data/digests/panamah.dat +8 -0
  149. data/test/data/digests/ripemd.dat +43 -0
  150. data/test/data/digests/sha.dat +19 -0
  151. data/test/data/digests/tiger.dat +11 -0
  152. data/test/data/digests/whirlpool.dat +13 -0
  153. data/test/data/hmacs/hmac.dat +6 -0
  154. data/test/digests_test.rb +29 -0
  155. data/test/hmacs_test.rb +38 -0
  156. data/test/test_helper.rb +42 -0
  157. metadata +220 -0
@@ -0,0 +1,31 @@
1
+
2
+ /*
3
+ * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2010 Wei Dai
5
+ * See COPYING for the extact license
6
+ */
7
+
8
+ #ifndef __JTWOFISH_H__
9
+ #define __JTWOFISH_H__
10
+
11
+ #include "jconfig.h"
12
+
13
+ #if ENABLED_TWOFISH_CIPHER
14
+
15
+ #include "jcipher_t.h"
16
+
17
+ // Crypto++ headers...
18
+
19
+ #include "twofish.h"
20
+
21
+ using namespace CryptoPP;
22
+
23
+ class JTwofish : public JCipher_Template<Twofish_Info, TWOFISH_CIPHER>
24
+ {
25
+ protected:
26
+ BlockCipher* getEncryptionObject();
27
+ BlockCipher* getDecryptionObject();
28
+ };
29
+
30
+ #endif
31
+ #endif
@@ -0,0 +1,52 @@
1
+
2
+ /*
3
+ * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2010 Wei Dai
5
+ * See COPYING for the extact license
6
+ */
7
+
8
+ #ifndef __JWHIRLPOOL_H__
9
+ #define __JWHIRLPOOL_H__
10
+
11
+ #include "jconfig.h"
12
+
13
+ #ifdef WORD64_AVAILABLE
14
+ #if ENABLED_WHIRLPOOL_HASH || ENABLED_WHIRLPOOL_HMAC
15
+
16
+ #if ENABLED_WHIRLPOOL_HASH
17
+ #include "jhash_t.h"
18
+ #endif
19
+
20
+ #if ENABLED_WHIRLPOOL_HMAC
21
+ #include "jhmac_t.h"
22
+ #endif
23
+
24
+ // Crypto++ headers...
25
+
26
+ #include "whrlpool.h"
27
+
28
+ using namespace CryptoPP;
29
+
30
+ #if ENABLED_WHIRLPOOL_HASH
31
+ class JWhirlpool : public JHash_Template<Whirlpool, WHIRLPOOL_HASH>
32
+ {
33
+ public:
34
+ JWhirlpool(string plaintext = "") : JHash_Template<Whirlpool, WHIRLPOOL_HASH>(plaintext) { }
35
+
36
+ static string getHashName() { return "Whirlpool"; }
37
+ };
38
+ #endif
39
+
40
+ #if ENABLED_WHIRLPOOL_HMAC
41
+ class JWhirlpool_HMAC : public JHMAC_Template<Whirlpool, WHIRLPOOL_HMAC>
42
+ {
43
+ public:
44
+ JWhirlpool_HMAC(string plaintext = "") : JHMAC_Template<Whirlpool, WHIRLPOOL_HMAC>(plaintext) { }
45
+
46
+ static string getHashName() { return "Whirlpool-HMAC"; }
47
+ };
48
+ #endif
49
+
50
+ #endif
51
+ #endif
52
+ #endif
@@ -0,0 +1,8 @@
1
+
2
+ /*
3
+ * Copyright (c) 2002-2010 J Smith <dark.panda@gmail.com>
4
+ * Crypto++ copyright (c) 1995-2010 Wei Dai
5
+ * See COPYING for the extact license
6
+ */
7
+
8
+ #include "cryptopp_ruby_api.h"
@@ -0,0 +1,114 @@
1
+
2
+ module RDoc
3
+ class CustomParser < C_Parser
4
+ extend ParserFactory
5
+ parse_files_matching(/\.(?:([CcHh])\1?|c([+xp])\2|y)\z/)
6
+
7
+ def mangle_comment(comment)
8
+ comment.sub!(%r{/\*+}) { " " * $&.length }
9
+ comment.sub!(%r{\*+/}) { " " * $&.length }
10
+ comment.gsub!(/^[ \t]*\*/m, '')
11
+ comment
12
+ end
13
+
14
+ private
15
+ def do_constants
16
+ @body.scan(
17
+ %r{
18
+ CRYPTOPP_DEFINE_CONST\(
19
+ \s*(\w+)\s*,
20
+ \s*"([^"]+)"\s*,
21
+ \s*(\w+)\s*
22
+ \)\s*;
23
+ }xm
24
+ ) do |klass, name, definition|
25
+ handle_constants('const', klass, name, definition)
26
+ end
27
+ super
28
+ end
29
+
30
+ def do_methods
31
+ @body.scan(
32
+ %r{
33
+ CRYPTOPP_MODULE_METHOD\(
34
+ \s*(\w+)\s*,
35
+ \s*"([^"]+)"\s*,
36
+ \s*(\w+)\s*,
37
+ \s*(-?\w+)\s*
38
+ \)
39
+ (?:;\s*/[*/]\s+in\s+(\w+?\.cpp))?
40
+ }xm
41
+ ) do |mod, name, body, params, source_file|
42
+ handle_method('module_function', mod, name, body, params, source_file)
43
+ end
44
+
45
+ @body.scan(
46
+ %r{
47
+ CRYPTOPP_CLASS_METHOD\(
48
+ \s*(\w+)\s*,
49
+ \s*"([^"]+)"\s*,
50
+ \s*(\w+)\s*,
51
+ \s*(-?\w+)\s*
52
+ \)
53
+ (?:;\s*/[*/]\s+in\s+(\w+?\.cpp))?
54
+ }xm
55
+ ) do |klass, name, body, params, source_file|
56
+ handle_method('method', "rb_cCryptoPP_#{klass}", name, body, params, source_file)
57
+ end
58
+
59
+ @body.scan(
60
+ %r{
61
+ rb_define_(
62
+ singleton_method |
63
+ method |
64
+ module_function |
65
+ private_method
66
+ )
67
+ \s*\(\s*([\w\.]+),
68
+ \s*"([^"]+)",
69
+ \s*(?:RUBY_METHOD_FUNC\(|VALUEFUNC\()?(\w+)\)?,
70
+ \s*(-?\w+)\s*\)
71
+ (?:;\s*/[*/]\s+in\s+(\w+?\.cpp))?
72
+ }xm
73
+ ) do |type, var_name, meth_name, meth_body, param_count, source_file|
74
+ handle_method(type, var_name, meth_name, meth_body, param_count, source_file)
75
+ end
76
+ end
77
+
78
+ def do_aliases
79
+ @body.scan(
80
+ %r{
81
+ CRYPTOPP_MODULE_METHOD_ALIAS\(
82
+ \s*(\w+)\s*,
83
+ \s*"([^"]+)"\s*,
84
+ \s*"([^"]+)"\s*
85
+ \)\s*;
86
+ }xm
87
+ ) do |mod, new_name, old_name|
88
+ @stats.num_methods += 1
89
+ class_name = @known_classes[mod] || mod
90
+ class_obj = find_class(mod, class_name)
91
+
92
+ class_obj.add_alias(Alias.new("", old_name, new_name, ""))
93
+ end
94
+
95
+ @body.scan(
96
+ %r{
97
+ CRYPTOPP_CLASS_METHOD_ALIAS\(
98
+ \s*(\w+)\s*,
99
+ \s*"([^"]+)"\s*,
100
+ \s*"([^"]+)"\s*
101
+ \)\s*;
102
+ }xm
103
+ ) do |klass, new_name, old_name|
104
+ klass = "rb_cCryptoPP_#{klass}"
105
+ @stats.num_methods += 1
106
+ class_name = @known_classes[klass] || klass
107
+ class_obj = find_class(klass, class_name)
108
+
109
+ class_obj.add_alias(Alias.new("", old_name, new_name, ""))
110
+ end
111
+ super
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,37 @@
1
+
2
+ require 'test/unit'
3
+ require 'test/test_helper'
4
+
5
+ class CiphersTest < Test::Unit::TestCase
6
+ include TestHelper
7
+
8
+ Dir.glob('test/data/ciphers/*.dat').sort.each do |f|
9
+ test_name = File.basename(f).gsub(/.dat$/, '')
10
+
11
+ class_eval(%{
12
+ def test_#{test_name}
13
+ run_cipher_test("#{f}")
14
+ end
15
+ })
16
+ end
17
+
18
+ def run_cipher_test(file)
19
+ readfile(file) do |options|
20
+ if CryptoPP.cipher_enabled? options[:algorithm]
21
+ encryption_factory_options = options.reject do |k, v|
22
+ [ :algorithm, :ciphertext, :ciphertext_hex ].include? k
23
+ end
24
+ encrypt = CryptoPP.cipher_factory options[:algorithm], encryption_factory_options
25
+
26
+ decryption_factory_options = options.reject do |k, v|
27
+ [ :algorithm, :plaintext, :plaintext_hex ].include? k
28
+ end
29
+ decrypt = CryptoPP.cipher_factory options[:algorithm], decryption_factory_options
30
+ decrypt.decrypt
31
+
32
+ assert_equal(decrypt.plaintext, encrypt.plaintext)
33
+ assert_equal(decrypt.ciphertext_hex, options[:ciphertext_hex])
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,7 @@
1
+ fields key_hex plaintext_hex ciphertext_hex
2
+ algorithm cipher des_ede2
3
+ test 0123456789abcdeffedcba9876543210 0123456789abcde7 7f1d0a77826b8aff
4
+ algorithm cipher des_ede3
5
+ test 0123456789abcdeffedcba987654321089abcdef01234567 0123456789abcde7 de0b7c06ae5e0ed5
6
+ algorithm cipher des_xex3
7
+ test 0123456789abcdef01010101010101011011121314151617 94dbe082549a14ef 9011121314151617
@@ -0,0 +1,6 @@
1
+ algorithm cipher threeway
2
+ fields key_hex plaintext_hex ciphertext_hex
3
+ test 000000000000000000000000 000000010000000100000001 4059c76e83ae9dc4ad21ecf7
4
+ test 000000060000000500000004 000000030000000200000001 d2f05b5ed6144138cab920cd
5
+ test def01234456789abbcdef012 234567899abcdef001234567 0aa55dbb9cdddb6d7cdb76b2
6
+ test d2f05b5ed6144138cab920cd 4059c76e83ae9dc4ad21ecf7 478ea8716b13f17c15b155ed
@@ -0,0 +1,8 @@
1
+ algorithm cipher arc4
2
+ fields key_hex plaintext_hex ciphertext_hex_cont
3
+ test 0123456789abcdef 0123456789abcdef 75b7878099e0c596
4
+ test 0123456789abcdef 0000000000000000 7494c2e7104b0879
5
+ test 0000000000000000 0000000000000000 de188941a3375d3a
6
+ test ef012345 00000000000000000000 d6a141a7ec3c38dfbd61
7
+ fields key_hex plaintext_hex plaintext_repeat ciphertext_hex_cont
8
+ test 0123456789abcdef 01 512 7595c3e6114a09780c4ad452338e1ffd9a1be949 8f813d76533449b6778dcad8c78a8d2ba9ac6608 5d0e53d59c26c2d1c490c1ebbe0ce66d1b6b1b13 b6b919b847c25a91447a95e75e4ef16779cde8bf 0a95850e32af9689444fd377108f98fdcbd4e726 567500990bcc7e0ca3c4aaa304a387d20f3b8fbb cd42a1bd311d7a4303dda5ab078896ae80c18b0a f66dff319616eb784e495ad2ce90d7f772a81747 b65f62093b1e0db9e5ba532fafec47508323e671 327df9444432cb7367cec82f5d44c0d00b67d650 a075cd4b70dedd77eb9b10231b6b5b741347396d 62897421d43df9b42e446e358e9c11a9b2184ecb ef0cd8e7a877ef968f1390ec9b3d35a5585cb009 290e2fcde7b5ec66d9084be44055a619d9dd7fc3 166f9487f7cb272912426445998514c15d53a18c 864ce3a2b7555793988126520eacf2e3066e230c 91bee4dd5304f5fd0405b35bd99c73135d3d9bc3 35ee049ef69b3867bf2d7bd1eaa595d8bfc0066f f8d31509eb0c6caa006c807a623ef84c3d33c195 d23ee320c40de0558157c822d4b8c569d849aed5 9d4e0fd7f379586b4b7ff684ed6a189f7486d49b 9c4bad9ba24b96abf924372c8a8fffb10d553549 00a77a3db5f205e1b99fcd8660863a159ad4abe4 0fa48934163ddde542a6585540fd683cbfd8c00f 12129a284deacc4cdefe58be7137541c047126c8 d49e2755ab181ab7e940b0c0
@@ -0,0 +1,5 @@
1
+ algorithm cipher blowfish
2
+ fields key plaintext ciphertext_hex
3
+ test abcdefghijklmnopqrstuvwxyz BLOWFISH 324ed0fef413a203
4
+ fields key plaintext_hex ciphertext_hex
5
+ test Who is John Galt? fedcba9876543210 cc91732b8022f684
@@ -0,0 +1,7 @@
1
+ algorithm cipher camellia
2
+ fields key_hex plaintext_hex ciphertext_hex
3
+ test 80000000000000000000000000000000 00000000000000000000000000000000 6c227f749319a3aa7da235a9bba05a2c
4
+ test 00000000000000000000000000000000 80000000000000000000000000000000 07923a39eb0a817d1c4d87bdb82d1f1c
5
+ test 00000000000000000000000000000000 00000000000000000000000000000000 3d028025b156327c17f762c1f2cbca71
6
+ test a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5 a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5 1f55093c234648c5c9c781e8c9fd42c4
7
+ test fefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefe fefefefefefefefefefefefefefefefe acdbb0f5a00e3cf63a89d9c09b44a058
@@ -0,0 +1,5 @@
1
+ algorithm cipher cast128
2
+ fields key_hex plaintext_hex ciphertext_hex
3
+ test 0123456712345678234567893456789a 0123456789abcdef 238b4fe5847e44b2
4
+ test 01234567123456782345 0123456789abcdef eb6a711a2c02271b
5
+ test 0123456712 0123456789abcdef 7ac816d16e9b302e
@@ -0,0 +1,5 @@
1
+ algorithm cipher cast256
2
+ fields key_hex plaintext_hex ciphertext_hex
3
+ test 2342bb9efa38542c0af75647f29f615d 00000000000000000000000000000000 c842a08972b43d20836c91d1b7530f6b
4
+ test 2342bb9efa38542cbed0ac83940ac298bac77a7717942863 00000000000000000000000000000000 1b386c0210dcadcbdd0e41aa08a7a7e8
5
+ test 2342bb9efa38542cbed0ac83940ac2988d7c47ce264908461cc1b5137ae6b604 00000000000000000000000000000000 4f6a2038286897b9c9870136553317fa
@@ -0,0 +1,198 @@
1
+ algorithm cipher des
2
+ fields key_hex plaintext_hex ciphertext_hex
3
+ test 0101010101010101 95f8a5e5dd31d900 8000000000000000
4
+ test 0101010101010101 dd7f121ca5015619 4000000000000000
5
+ test 0101010101010101 2e8653104f3834ea 2000000000000000
6
+ test 0101010101010101 4bd388ff6cd81d4f 1000000000000000
7
+ test 0101010101010101 20b9e767b2fb1456 0800000000000000
8
+ test 0101010101010101 55579380d77138ef 0400000000000000
9
+ test 0101010101010101 6cc5defaaf04512f 0200000000000000
10
+ test 0101010101010101 0d9f279ba5d87260 0100000000000000
11
+ test 0101010101010101 d9031b0271bd5a0a 0080000000000000
12
+ test 0101010101010101 424250b37c3dd951 0040000000000000
13
+ test 0101010101010101 b8061b7ecd9a21e5 0020000000000000
14
+ test 0101010101010101 f15d0f286b65bd28 0010000000000000
15
+ test 0101010101010101 add0cc8d6e5deba1 0008000000000000
16
+ test 0101010101010101 e6d5f82752ad63d1 0004000000000000
17
+ test 0101010101010101 ecbfe3bd3f591a5e 0002000000000000
18
+ test 0101010101010101 f356834379d165cd 0001000000000000
19
+ test 0101010101010101 2b9f982f20037fa9 0000800000000000
20
+ test 0101010101010101 889de068a16f0be6 0000400000000000
21
+ test 0101010101010101 e19e275d846a1298 0000200000000000
22
+ test 0101010101010101 329a8ed523d71aec 0000100000000000
23
+ test 0101010101010101 e7fce22557d23c97 0000080000000000
24
+ test 0101010101010101 12a9f5817ff2d65d 0000040000000000
25
+ test 0101010101010101 a484c3ad38dc9c19 0000020000000000
26
+ test 0101010101010101 fbe00a8a1ef8ad72 0000010000000000
27
+ test 0101010101010101 750d079407521363 0000008000000000
28
+ test 0101010101010101 64feed9c724c2faf 0000004000000000
29
+ test 0101010101010101 f02b263b328e2b60 0000002000000000
30
+ test 0101010101010101 9d64555a9a10b852 0000001000000000
31
+ test 0101010101010101 d106ff0bed5255d7 0000000800000000
32
+ test 0101010101010101 e1652c6b138c64a5 0000000400000000
33
+ test 0101010101010101 e428581186ec8f46 0000000200000000
34
+ test 0101010101010101 aeb5f5ede22d1a36 0000000100000000
35
+ test 0101010101010101 e943d7568aec0c5c 0000000080000000
36
+ test 0101010101010101 df98c8276f54b04b 0000000040000000
37
+ test 0101010101010101 b160e4680f6c696f 0000000020000000
38
+ test 0101010101010101 fa0752b07d9c4ab8 0000000010000000
39
+ test 0101010101010101 ca3a2b036dbc8502 0000000008000000
40
+ test 0101010101010101 5e0905517bb59bcf 0000000004000000
41
+ test 0101010101010101 814eeb3b91d90726 0000000002000000
42
+ test 0101010101010101 4d49db1532919c9f 0000000001000000
43
+ test 0101010101010101 25eb5fc3f8cf0621 0000000000800000
44
+ test 0101010101010101 ab6a20c0620d1c6f 0000000000400000
45
+ test 0101010101010101 79e90dbc98f92cca 0000000000200000
46
+ test 0101010101010101 866ecedd8072bb0e 0000000000100000
47
+ test 0101010101010101 8b54536f2f3e64a8 0000000000080000
48
+ test 0101010101010101 ea51d3975595b86b 0000000000040000
49
+ test 0101010101010101 caffc6ac4542de31 0000000000020000
50
+ test 0101010101010101 8dd45a2ddf90796c 0000000000010000
51
+ test 0101010101010101 1029d55e880ec2d0 0000000000008000
52
+ test 0101010101010101 5d86cb23639dbea9 0000000000004000
53
+ test 0101010101010101 1d1ca853ae7c0c5f 0000000000002000
54
+ test 0101010101010101 ce332329248f3228 0000000000001000
55
+ test 0101010101010101 8405d1abe24fb942 0000000000000800
56
+ test 0101010101010101 e643d78090ca4207 0000000000000400
57
+ test 0101010101010101 48221b9937748a23 0000000000000200
58
+ test 0101010101010101 dd7c0bbd61fafd54 0000000000000100
59
+ test 0101010101010101 2fbc291a570db5c4 0000000000000080
60
+ test 0101010101010101 e07c30d7e4e26e12 0000000000000040
61
+ test 0101010101010101 0953e2258e8e90a1 0000000000000020
62
+ test 0101010101010101 5b711bc4ceebf2ee 0000000000000010
63
+ test 0101010101010101 cc083f1e6d9e85f6 0000000000000008
64
+ test 0101010101010101 d2fd8867d50d2dfe 0000000000000004
65
+ test 0101010101010101 06e7ea22ce92708f 0000000000000002
66
+ test 0101010101010101 166b40b44aba4bd6 0000000000000001
67
+ test 8001010101010101 0000000000000000 95a8d72813daa94d
68
+ test 4001010101010101 0000000000000000 0eec1487dd8c26d5
69
+ test 2001010101010101 0000000000000000 7ad16ffb79c45926
70
+ test 1001010101010101 0000000000000000 d3746294ca6a6cf3
71
+ test 0801010101010101 0000000000000000 809f5f873c1fd761
72
+ test 0401010101010101 0000000000000000 c02faffec989d1fc
73
+ test 0201010101010101 0000000000000000 4615aa1d33e72f10
74
+ test 0180010101010101 0000000000000000 2055123350c00858
75
+ test 0140010101010101 0000000000000000 df3b99d6577397c8
76
+ test 0120010101010101 0000000000000000 31fe17369b5288c9
77
+ test 0110010101010101 0000000000000000 dfdd3cc64dae1642
78
+ test 0108010101010101 0000000000000000 178c83ce2b399d94
79
+ test 0104010101010101 0000000000000000 50f636324a9b7f80
80
+ test 0102010101010101 0000000000000000 a8468ee3bc18f06d
81
+ test 0101800101010101 0000000000000000 a2dc9e92fd3cde92
82
+ test 0101400101010101 0000000000000000 cac09f797d031287
83
+ test 0101200101010101 0000000000000000 90ba680b22aeb525
84
+ test 0101100101010101 0000000000000000 ce7a24f350e280b6
85
+ test 0101080101010101 0000000000000000 882bff0aa01a0b87
86
+ test 0101040101010101 0000000000000000 25610288924511c2
87
+ test 0101020101010101 0000000000000000 c71516c29c75d170
88
+ test 0101018001010101 0000000000000000 5199c29a52c9f059
89
+ test 0101014001010101 0000000000000000 c22f0a294a71f29f
90
+ test 0101012001010101 0000000000000000 ee371483714c02ea
91
+ test 0101011001010101 0000000000000000 a81fbd448f9e522f
92
+ test 0101010801010101 0000000000000000 4f644c92e192dfed
93
+ test 0101010401010101 0000000000000000 1afa9a66a6df92ae
94
+ test 0101010201010101 0000000000000000 b3c1cc715cb879d8
95
+ test 0101010180010101 0000000000000000 19d032e64ab0bd8b
96
+ test 0101010140010101 0000000000000000 3cfaa7a7dc8720dc
97
+ test 0101010120010101 0000000000000000 b7265f7f447ac6f3
98
+ test 0101010110010101 0000000000000000 9db73b3c0d163f54
99
+ test 0101010108010101 0000000000000000 8181b65babf4a975
100
+ test 0101010104010101 0000000000000000 93c9b64042eaa240
101
+ test 0101010102010101 0000000000000000 5570530829705592
102
+ test 0101010101800101 0000000000000000 8638809e878787a0
103
+ test 0101010101400101 0000000000000000 41b9a79af79ac208
104
+ test 0101010101200101 0000000000000000 7a9be42f2009a892
105
+ test 0101010101100101 0000000000000000 29038d56ba6d2745
106
+ test 0101010101080101 0000000000000000 5495c6abf1e5df51
107
+ test 0101010101040101 0000000000000000 ae13dbd561488933
108
+ test 0101010101020101 0000000000000000 024d1ffa8904e389
109
+ test 0101010101018001 0000000000000000 d1399712f99bf02e
110
+ test 0101010101014001 0000000000000000 14c1d7c1cffec79e
111
+ test 0101010101012001 0000000000000000 1de5279dae3bed6f
112
+ test 0101010101011001 0000000000000000 e941a33f85501303
113
+ test 0101010101010801 0000000000000000 da99dbbc9a03f379
114
+ test 0101010101010401 0000000000000000 b7fc92f91d8e92e9
115
+ test 0101010101010201 0000000000000000 ae8e5caa3ca04e85
116
+ test 0101010101010180 0000000000000000 9cc62df43b6eed74
117
+ test 0101010101010140 0000000000000000 d863dbb5c59a91a0
118
+ test 0101010101010120 0000000000000000 a1ab2190545b91d7
119
+ test 0101010101010110 0000000000000000 0875041e64c570f7
120
+ test 0101010101010108 0000000000000000 5a594528bebef1cc
121
+ test 0101010101010104 0000000000000000 fcdb3291de21f0c0
122
+ test 0101010101010102 0000000000000000 869efd7f9f265a09
123
+ test 1046913489980131 0000000000000000 88d55e54f54c97b4
124
+ test 1007103489988020 0000000000000000 0c0cc00c83ea48fd
125
+ test 10071034c8980120 0000000000000000 83bc8ef3a6570183
126
+ test 1046103489988020 0000000000000000 df725dcad94ea2e9
127
+ test 1086911519190101 0000000000000000 e652b53b550be8b0
128
+ test 1086911519580101 0000000000000000 af527120c485cbb0
129
+ test 5107b01519580101 0000000000000000 0f04ce393db926d5
130
+ test 1007b01519190101 0000000000000000 c9f00ffc74079067
131
+ test 3107915498080101 0000000000000000 7cfd82a593252b4e
132
+ test 3107919498080101 0000000000000000 cb49a2f9e91363e3
133
+ test 10079115b9080140 0000000000000000 00b588be70d23f56
134
+ test 3107911598090140 0000000000000000 406a9a6ab43399ae
135
+ test 1007d01589980101 0000000000000000 6cb773611dca9ada
136
+ test 9107911589980101 0000000000000000 67fd21c17dbb5d70
137
+ test 9107d01589190101 0000000000000000 9592cb4110430787
138
+ test 1007d01598980120 0000000000000000 a6b7ff68a318ddd3
139
+ test 1007940498190101 0000000000000000 4d102196c914ca16
140
+ test 0107910491190401 0000000000000000 2dfa9f4573594965
141
+ test 0107910491190101 0000000000000000 b46604816c0e0774
142
+ test 0107940491190401 0000000000000000 6e7e6221a4f34e87
143
+ test 19079210981a0101 0000000000000000 aa85e74643233199
144
+ test 1007911998190801 0000000000000000 2e5a19db4d1962d6
145
+ test 10079119981a0801 0000000000000000 23a866a809d30894
146
+ test 1007921098190101 0000000000000000 d812d961f017d320
147
+ test 100791159819010b 0000000000000000 055605816e58608f
148
+ test 1004801598190101 0000000000000000 abd88e8b1b7716f1
149
+ test 1004801598190102 0000000000000000 537ac95be69da1e1
150
+ test 1004801598190108 0000000000000000 aed0f6ae3c25cdd8
151
+ test 1002911598100104 0000000000000000 b3e35a5ee53e7b8d
152
+ test 1002911598190104 0000000000000000 61c79c71921a2ef8
153
+ test 1002911598100201 0000000000000000 e2f5728f0995013c
154
+ test 1002911698100101 0000000000000000 1aeac39a61f0a464
155
+ test 7ca110454a1a6e57 01a1d6d039776742 690f5b0d9a26939b
156
+ test 0131d9619dc1376e 5cd54ca83def57da 7a389d10354bd271
157
+ test 07a1133e4a0b2686 0248d43806f67172 868ebb51cab4599a
158
+ test 3849674c2602319e 51454b582ddf440a 7178876e01f19b2a
159
+ test 04b915ba43feb5b6 42fd443059577fa2 af37fb421f8c4095
160
+ test 0113b970fd34f2ce 059b5e0851cf143a 86a560f10ec6d85b
161
+ test 0170f175468fb5e6 0756d8e0774761d2 0cd3da020021dc09
162
+ test 43297fad38e373fe 762514b829bf486a ea676b2cb7db2b7a
163
+ test 07a7137045da2a16 3bdd119049372802 dfd64a815caf1a0f
164
+ test 04689104c2fd3b2f 26955f6835af609a 5c513c9c4886c088
165
+ test 37d06bb516cb7546 164d5e404f275232 0a2aeeae3ff4ab77
166
+ test 1f08260d1ac2465e 6b056e18759f5cca ef1bf03e5dfa575a
167
+ test 584023641aba6176 004bd6ef09176062 88bf0db6d70dee56
168
+ test 025816164629b007 480d39006ee762f2 a1f9915541020b56
169
+ test 49793ebc79b3258f 437540c8698f3cfa 6fbf1cafcffd0556
170
+ test 4fb05e1515ab73a7 072d43a077075292 2f22e49bab7ca1ac
171
+ test 49e95d6d4ca229bf 02fe55778117f12a 5a6b612cc26cce4a
172
+ test 018310dc409b26d6 1d9d5c5018f728c2 5f4c038ed12b2e41
173
+ test 1c587f1c13924fef 305532286d6f295a 63fac0d034d9f793
174
+
175
+
176
+ note CBC mode, zeroes padding
177
+ fields key_hex plaintext_hex iv_hex block_mode padding ciphertext_hex
178
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef cbc zeroes e5c7cdde872bf27c43e934008c389c0f683788499a7c05f6
179
+
180
+ note CBC mode, PKCS padding
181
+ fields key_hex plaintext_hex iv_hex block_mode padding ciphertext_hex
182
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef cbc pkcs e5c7cdde872bf27c43e934008c389c0f683788499a7c05f662c16a27e4fcf277
183
+
184
+ note CBC CTR mode
185
+ fields key_hex plaintext_hex iv_hex block_mode ciphertext_hex
186
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef cbc_cts e5c7cdde872bf27c683788499a7c05f643e934008c389c0f
187
+
188
+ note CFB mode
189
+ fields key_hex plaintext_hex iv_hex block_mode ciphertext_hex
190
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef cfb f3096249c7f46e51a69e839b1a92f78403467133898ea622
191
+
192
+ note OFB mode
193
+ fields key_hex plaintext_hex iv_hex block_mode ciphertext_hex
194
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef ofb f3096249c7f46e5135f24a242eeb3d3f3d6d5be3255af8c3
195
+
196
+ note COUNTER mode
197
+ fields key_hex plaintext_hex iv_hex block_mode ciphertext_hex
198
+ test 0123456789abcdef 4e6f77206973207468652074696d6520666f7220616c6c20 1234567890abcdef counter f3096249c7f46e51163a8ca0ffc94c27fa2f80f480b86f75