ffi-hydrogen 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d282b422b7e1d13983ab90d1484dc3b74ad8fa3eae7640cef6e819ae2cd24f3
4
- data.tar.gz: 6f8f83e9490c8de43377137eadde0d049ac7cf84077fa73337bd16462b1fa5b9
3
+ metadata.gz: 4b354f8b31c13a98f4e2b428460c3e500b69ad7950d262c3f52289ce7be980e2
4
+ data.tar.gz: c514a4652a44f06e7f9ce0b05dafe0e9e4af77d35eb74c3510aaf7ad17d5df3e
5
5
  SHA512:
6
- metadata.gz: 84888ff5bb0ca444e451d288792211388d70910453c14fc49379cd32f0c24f561930c666d29440300cdff44fab9b232eee05618ed4dcc07d378928ea30b3d04c
7
- data.tar.gz: 306407c680073693b90944009fc24a4fa5b0d54b0aec3f02919f9683375116070a8b2486c661d36447ea348b9c118e40d26f6efefd59c2e1422f139b9d7e800e
6
+ metadata.gz: 7f4b4c58a020a134abb56fd2ac9560696e4e0ab2a51e1e49568d107f3bc539632e3ac8652e511bf7dba6e4137663ab636e006c766a875b3c5367f2b2e4a41865
7
+ data.tar.gz: 7a9fcb191ff8304d783c01aeb263f1e81e8f05ae69097ad8e853f5e36b442faca9d49cb3344ebe79395052687bf93fd6ab406ebdfd5751b3369ce2d8bb1c3122
data/Rakefile CHANGED
@@ -16,11 +16,4 @@ task :rubocop do
16
16
  RuboCop::RakeTask.new
17
17
  end
18
18
 
19
- desc "Run all benchmarks"
20
- task :bench do
21
- ruby "bench/both.rb"
22
- ruby "bench/encode.rb"
23
- ruby "bench/encrypt.rb"
24
- end
25
-
26
19
  task :default => [:compile, :rubocop, :spec]
@@ -0,0 +1,185 @@
1
+ require "base64"
2
+ require "benchmark/ips"
3
+ require "ffi/hydrogen"
4
+ require "rbnacl"
5
+ require "urlcrypt"
6
+
7
+ TEST_STRINGS = [
8
+ "0123456789",
9
+ "<abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv>",
10
+ "<abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#^&*()_+>",
11
+ ]
12
+
13
+ TEST_STRINGS.each do |str|
14
+ puts "============================ Test string length: #{str.size} ============================"
15
+
16
+ label = "#{str.size} characters"
17
+
18
+ encoded = ::FFI::Hydrogen.modp_b64_encode(str)
19
+
20
+ hydrogen_key = ::FFI::Hydrogen.hydro_secretbox_keygen
21
+ hydrogen_context = "benched1"
22
+ hydrogen_box = ::FFI::Hydrogen::Secretbox.new(hydrogen_context, hydrogen_key)
23
+ hydrogen_encrypted = hydrogen_box.encrypt(str)
24
+ hydrogen_encrypted_encoded = hydrogen_box.encrypt_encode(str)
25
+
26
+ rbnacl_key = ::RbNaCl::Random.random_bytes(::RbNaCl::SecretBox.key_bytes)
27
+ rbnacl_box = ::RbNaCl::SimpleBox.from_secret_key(rbnacl_key)
28
+ rbnacl_encrypted = rbnacl_box.encrypt(str)
29
+ rbnacl_encrypted_encoded = ::Base64.encode64(rbnacl_box.encrypt(str))
30
+
31
+ urlcrypt_key = "h34j4k3l25gh342o5jk46ghjk5nbjkl7nhljk34532j4k5b43hjk5g432jk6v4gjhk6f5j6gv5hj2k3g54hjk321g4hjk25g4hjk35gf4yu6f5jg5b43jk25h4jk325d"
32
+ ::URLcrypt.key = [urlcrypt_key].pack("H*")
33
+ urlcrypt_encrypted = ::URLcrypt.encrypt(str)
34
+
35
+ Benchmark.ips do |b|
36
+ b.time = 2
37
+ b.warmup = 1
38
+
39
+ b.report("Boxed Hydrogen encrypt_encode (#{label})") do |n|
40
+ i = 0
41
+ while i < n
42
+ hydrogen_box.encrypt_encode(str)
43
+ i += 1
44
+ end
45
+ end
46
+
47
+ b.report("Boxed Hydrogen decode_decrypt (#{label})") do |n|
48
+ i = 0
49
+ while i < n
50
+ hydrogen_box.decode_decrypt(hydrogen_encrypted_encoded)
51
+ i += 1
52
+ end
53
+ end
54
+
55
+ b.report("Boxed Hydrogen encrypt + Base64 encode (#{label})") do |n|
56
+ i = 0
57
+ while i < n
58
+ hydrogen_box.encrypt(::Base64.encode64(str))
59
+ i += 1
60
+ end
61
+ end
62
+
63
+ b.report("Boxed Hydrogen decrypt + Base64 decode (#{label})") do |n|
64
+ i = 0
65
+ while i < n
66
+ ::Base64.decode64(hydrogen_box.decrypt(hydrogen_encrypted_encoded))
67
+ i += 1
68
+ end
69
+ end
70
+
71
+ b.report("URLcrypt decrypt (#{label})") do |n|
72
+ i = 0
73
+ while i < n
74
+ ::URLcrypt.encrypt(str)
75
+ i += 1
76
+ end
77
+ end
78
+
79
+ b.report("URLcrypt decrypt (#{label})") do |n|
80
+ i = 0
81
+ while i < n
82
+ ::URLcrypt.decrypt(urlcrypt_encrypted)
83
+ i += 1
84
+ end
85
+ end
86
+
87
+ b.report("Boxed RbNaCl encrypt + Base64 encode (#{label})") do |n|
88
+ i = 0
89
+ while i < n
90
+ ::Base64.encode64(rbnacl_box.encrypt(str))
91
+ i += 1
92
+ end
93
+ end
94
+
95
+ b.report("Boxed RbNaCl decrypt + Base64 decode (#{label})") do |n|
96
+ i = 0
97
+ while i < n
98
+ rbnacl_box.decrypt(::Base64.decode64(rbnacl_encrypted_encoded))
99
+ i += 1
100
+ end
101
+ end
102
+
103
+ b.report("modp_b64_encode (#{label})") do |n|
104
+ i = 0
105
+ while i < n
106
+ ::FFI::Hydrogen.modp_b64_encode(str)
107
+ i += 1
108
+ end
109
+ end
110
+
111
+ b.report("modp_b64_decode (#{label})") do |n|
112
+ i = 0
113
+ while i < n
114
+ ::FFI::Hydrogen.modp_b64_decode(encoded)
115
+ i += 1
116
+ end
117
+ end
118
+
119
+ b.report("Base64 encode (#{label})") do |n|
120
+ i = 0
121
+ while i < n
122
+ ::Base64.encode64(str)
123
+ i += 1
124
+ end
125
+ end
126
+
127
+ b.report("Base64 decode (#{label})") do |n|
128
+ i = 0
129
+ while i < n
130
+ ::Base64.decode64(str)
131
+ i += 1
132
+ end
133
+ end
134
+
135
+ b.report("hydro_secretbox_encrypt (#{label})") do |n|
136
+ i = 0
137
+ while i < n
138
+ ::FFI::Hydrogen.hydro_secretbox_encrypt(str, hydrogen_context, hydrogen_key)
139
+ i += 1
140
+ end
141
+ end
142
+
143
+ b.report("hydro_secretbox_decrypt (#{label})") do |n|
144
+ i = 0
145
+ while i < n
146
+ ::FFI::Hydrogen.hydro_secretbox_decrypt(hydrogen_encrypted, hydrogen_context, hydrogen_key)
147
+ i += 1
148
+ end
149
+ end
150
+
151
+ b.report("Boxed Hydrogen encrypt (#{label})") do |n|
152
+ i = 0
153
+ while i < n
154
+ hydrogen_box.encrypt(str)
155
+ i += 1
156
+ end
157
+ end
158
+
159
+ b.report("Boxed Hydrogen decrypt (#{label})") do |n|
160
+ i = 0
161
+ while i < n
162
+ hydrogen_box.decrypt(hydrogen_encrypted)
163
+ i += 1
164
+ end
165
+ end
166
+
167
+ b.report("Boxed RbNaCl encrypt (#{label})") do |n|
168
+ i = 0
169
+ while i < n
170
+ rbnacl_box.encrypt(str)
171
+ i += 1
172
+ end
173
+ end
174
+
175
+ b.report("Boxed RbNaCl decrypt (#{label})") do |n|
176
+ i = 0
177
+ while i < n
178
+ rbnacl_box.decrypt(rbnacl_encrypted)
179
+ i += 1
180
+ end
181
+ end
182
+
183
+ b.compare!
184
+ end
185
+ end
@@ -0,0 +1,572 @@
1
+ ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin17]
2
+ ============================ Test string length: 10 ============================
3
+ Warming up --------------------------------------
4
+ Boxed Hydrogen encrypt_encode (10 characters)
5
+ 21.573k i/100ms
6
+ Boxed Hydrogen decode_decrypt (10 characters)
7
+ 28.809k i/100ms
8
+ Boxed Hydrogen encrypt + Base64 encode (10 characters)
9
+ 19.855k i/100ms
10
+ Boxed Hydrogen decrypt + Base64 decode (10 characters)
11
+ 22.258k i/100ms
12
+ URLcrypt decrypt (10 characters)
13
+ 1.677k i/100ms
14
+ URLcrypt decrypt (10 characters)
15
+ 1.359k i/100ms
16
+ Boxed RbNaCl encrypt + Base64 encode (10 characters)
17
+ 9.279k i/100ms
18
+ Boxed RbNaCl decrypt + Base64 decode (10 characters)
19
+ 17.470k i/100ms
20
+ modp_b64_encode (10 characters)
21
+ 42.092k i/100ms
22
+ modp_b64_decode (10 characters)
23
+ 40.998k i/100ms
24
+ Base64 encode (10 characters)
25
+ 125.956k i/100ms
26
+ Base64 decode (10 characters)
27
+ 178.979k i/100ms
28
+ hydro_secretbox_encrypt (10 characters)
29
+ 17.136k i/100ms
30
+ hydro_secretbox_decrypt (10 characters)
31
+ 20.593k i/100ms
32
+ Boxed Hydrogen encrypt (10 characters)
33
+ 23.083k i/100ms
34
+ Boxed Hydrogen decrypt (10 characters)
35
+ 30.098k i/100ms
36
+ Boxed RbNaCl encrypt (10 characters)
37
+ 9.951k i/100ms
38
+ Boxed RbNaCl decrypt (10 characters)
39
+ 20.269k i/100ms
40
+ Calculating -------------------------------------
41
+ Boxed Hydrogen encrypt_encode (10 characters)
42
+ 252.162k (± 1.6%) i/s - 517.752k in 2.053751s
43
+ Boxed Hydrogen decode_decrypt (10 characters)
44
+ 316.936k (± 6.4%) i/s - 662.607k in 2.100069s
45
+ Boxed Hydrogen encrypt + Base64 encode (10 characters)
46
+ 213.462k (± 8.0%) i/s - 436.810k in 2.064163s
47
+ Boxed Hydrogen decrypt + Base64 decode (10 characters)
48
+ 263.182k (± 8.3%) i/s - 534.192k in 2.045270s
49
+ URLcrypt decrypt (10 characters)
50
+ 17.035k (± 8.6%) i/s - 35.217k in 2.086145s
51
+ URLcrypt decrypt (10 characters)
52
+ 14.290k (± 3.6%) i/s - 29.898k in 2.095083s
53
+ Boxed RbNaCl encrypt + Base64 encode (10 characters)
54
+ 100.153k (± 1.5%) i/s - 204.138k in 2.038715s
55
+ Boxed RbNaCl decrypt + Base64 decode (10 characters)
56
+ 193.427k (± 2.1%) i/s - 401.810k in 2.078248s
57
+ modp_b64_encode (10 characters)
58
+ 522.342k (± 1.0%) i/s - 1.052M in 2.014775s
59
+ modp_b64_decode (10 characters)
60
+ 521.937k (± 1.8%) i/s - 1.066M in 2.042966s
61
+ Base64 encode (10 characters)
62
+ 2.337M (± 3.4%) i/s - 4.786M in 2.050232s
63
+ Base64 decode (10 characters)
64
+ 4.591M (± 2.1%) i/s - 9.307M in 2.028341s
65
+ hydro_secretbox_encrypt (10 characters)
66
+ 184.954k (± 2.1%) i/s - 376.992k in 2.039282s
67
+ hydro_secretbox_decrypt (10 characters)
68
+ 218.576k (± 6.2%) i/s - 453.046k in 2.081367s
69
+ Boxed Hydrogen encrypt (10 characters)
70
+ 246.691k (± 3.2%) i/s - 507.826k in 2.060654s
71
+ Boxed Hydrogen decrypt (10 characters)
72
+ 337.057k (± 5.4%) i/s - 692.254k in 2.060321s
73
+ Boxed RbNaCl encrypt (10 characters)
74
+ 107.833k (± 1.4%) i/s - 218.922k in 2.030618s
75
+ Boxed RbNaCl decrypt (10 characters)
76
+ 226.481k (± 1.8%) i/s - 466.187k in 2.059060s
77
+
78
+ Comparison:
79
+ Base64 decode (10 characters): 4590552.8 i/s
80
+ Base64 encode (10 characters): 2337407.8 i/s - 1.96x slower
81
+ modp_b64_encode (10 characters): 522342.2 i/s - 8.79x slower
82
+ modp_b64_decode (10 characters): 521937.0 i/s - 8.80x slower
83
+ Boxed Hydrogen decrypt (10 characters): 337057.5 i/s - 13.62x slower
84
+ Boxed Hydrogen decode_decrypt (10 characters): 316935.6 i/s - 14.48x slower
85
+ Boxed Hydrogen decrypt + Base64 decode (10 characters): 263182.3 i/s - 17.44x slower
86
+ Boxed Hydrogen encrypt_encode (10 characters): 252162.4 i/s - 18.20x slower
87
+ Boxed Hydrogen encrypt (10 characters): 246691.4 i/s - 18.61x slower
88
+ Boxed RbNaCl decrypt (10 characters): 226481.5 i/s - 20.27x slower
89
+ hydro_secretbox_decrypt (10 characters): 218576.1 i/s - 21.00x slower
90
+ Boxed Hydrogen encrypt + Base64 encode (10 characters): 213461.9 i/s - 21.51x slower
91
+ Boxed RbNaCl decrypt + Base64 decode (10 characters): 193427.4 i/s - 23.73x slower
92
+ hydro_secretbox_encrypt (10 characters): 184953.8 i/s - 24.82x slower
93
+ Boxed RbNaCl encrypt (10 characters): 107833.3 i/s - 42.57x slower
94
+ Boxed RbNaCl encrypt + Base64 encode (10 characters): 100153.1 i/s - 45.84x slower
95
+ URLcrypt decrypt (10 characters): 14290.3 i/s - 321.24x slower
96
+
97
+ ============================ Test string length: 50 ============================
98
+ Warming up --------------------------------------
99
+ Boxed Hydrogen encrypt_encode (50 characters)
100
+ 20.093k i/100ms
101
+ Boxed Hydrogen decode_decrypt (50 characters)
102
+ 25.187k i/100ms
103
+ Boxed Hydrogen encrypt + Base64 encode (50 characters)
104
+ 17.855k i/100ms
105
+ Boxed Hydrogen decrypt + Base64 decode (50 characters)
106
+ 21.604k i/100ms
107
+ URLcrypt decrypt (50 characters)
108
+ 874.000 i/100ms
109
+ URLcrypt decrypt (50 characters)
110
+ 656.000 i/100ms
111
+ Boxed RbNaCl encrypt + Base64 encode (50 characters)
112
+ 8.726k i/100ms
113
+ Boxed RbNaCl decrypt + Base64 decode (50 characters)
114
+ 14.748k i/100ms
115
+ modp_b64_encode (50 characters)
116
+ 37.331k i/100ms
117
+ modp_b64_decode (50 characters)
118
+ 35.980k i/100ms
119
+ Base64 encode (50 characters)
120
+ 112.389k i/100ms
121
+ Base64 decode (50 characters)
122
+ 111.234k i/100ms
123
+ hydro_secretbox_encrypt (50 characters)
124
+ 15.481k i/100ms
125
+ hydro_secretbox_decrypt (50 characters)
126
+ 18.052k i/100ms
127
+ Boxed Hydrogen encrypt (50 characters)
128
+ 20.260k i/100ms
129
+ Boxed Hydrogen decrypt (50 characters)
130
+ 26.027k i/100ms
131
+ Boxed RbNaCl encrypt (50 characters)
132
+ 9.613k i/100ms
133
+ Boxed RbNaCl decrypt (50 characters)
134
+ 17.026k i/100ms
135
+ Calculating -------------------------------------
136
+ Boxed Hydrogen encrypt_encode (50 characters)
137
+ 215.260k (± 4.9%) i/s - 442.046k in 2.058848s
138
+ Boxed Hydrogen decode_decrypt (50 characters)
139
+ 285.435k (± 1.3%) i/s - 579.301k in 2.029896s
140
+ Boxed Hydrogen encrypt + Base64 encode (50 characters)
141
+ 187.919k (± 3.8%) i/s - 392.810k in 2.093306s
142
+ Boxed Hydrogen decrypt + Base64 decode (50 characters)
143
+ 235.645k (± 4.8%) i/s - 475.288k in 2.022049s
144
+ URLcrypt decrypt (50 characters)
145
+ 8.466k (± 3.7%) i/s - 17.480k in 2.067446s
146
+ URLcrypt decrypt (50 characters)
147
+ 6.200k (± 3.6%) i/s - 12.464k in 2.013105s
148
+ Boxed RbNaCl encrypt + Base64 encode (50 characters)
149
+ 95.149k (± 3.4%) i/s - 191.972k in 2.019996s
150
+ Boxed RbNaCl decrypt + Base64 decode (50 characters)
151
+ 173.688k (± 2.2%) i/s - 353.952k in 2.038823s
152
+ modp_b64_encode (50 characters)
153
+ 448.039k (± 1.8%) i/s - 895.944k in 2.000340s
154
+ modp_b64_decode (50 characters)
155
+ 446.412k (± 3.4%) i/s - 899.500k in 2.017499s
156
+ Base64 encode (50 characters)
157
+ 1.993M (± 4.2%) i/s - 4.046M in 2.033397s
158
+ Base64 decode (50 characters)
159
+ 1.989M (± 3.6%) i/s - 4.004M in 2.015453s
160
+ hydro_secretbox_encrypt (50 characters)
161
+ 167.432k (± 5.5%) i/s - 340.582k in 2.041290s
162
+ hydro_secretbox_decrypt (50 characters)
163
+ 202.347k (± 4.1%) i/s - 415.196k in 2.055553s
164
+ Boxed Hydrogen encrypt (50 characters)
165
+ 232.932k (± 1.8%) i/s - 465.980k in 2.001115s
166
+ Boxed Hydrogen decrypt (50 characters)
167
+ 303.238k (± 3.0%) i/s - 624.648k in 2.061856s
168
+ Boxed RbNaCl encrypt (50 characters)
169
+ 102.299k (± 3.5%) i/s - 211.486k in 2.069951s
170
+ Boxed RbNaCl decrypt (50 characters)
171
+ 198.379k (± 4.0%) i/s - 408.624k in 2.063514s
172
+
173
+ Comparison:
174
+ Base64 encode (50 characters): 1993441.3 i/s
175
+ Base64 decode (50 characters): 1989450.2 i/s - same-ish: difference falls within error
176
+ modp_b64_encode (50 characters): 448039.1 i/s - 4.45x slower
177
+ modp_b64_decode (50 characters): 446411.5 i/s - 4.47x slower
178
+ Boxed Hydrogen decrypt (50 characters): 303237.7 i/s - 6.57x slower
179
+ Boxed Hydrogen decode_decrypt (50 characters): 285434.6 i/s - 6.98x slower
180
+ Boxed Hydrogen decrypt + Base64 decode (50 characters): 235644.6 i/s - 8.46x slower
181
+ Boxed Hydrogen encrypt (50 characters): 232932.1 i/s - 8.56x slower
182
+ Boxed Hydrogen encrypt_encode (50 characters): 215259.9 i/s - 9.26x slower
183
+ hydro_secretbox_decrypt (50 characters): 202347.0 i/s - 9.85x slower
184
+ Boxed RbNaCl decrypt (50 characters): 198379.0 i/s - 10.05x slower
185
+ Boxed Hydrogen encrypt + Base64 encode (50 characters): 187918.6 i/s - 10.61x slower
186
+ Boxed RbNaCl decrypt + Base64 decode (50 characters): 173688.3 i/s - 11.48x slower
187
+ hydro_secretbox_encrypt (50 characters): 167432.1 i/s - 11.91x slower
188
+ Boxed RbNaCl encrypt (50 characters): 102298.7 i/s - 19.49x slower
189
+ Boxed RbNaCl encrypt + Base64 encode (50 characters): 95149.3 i/s - 20.95x slower
190
+ URLcrypt decrypt (50 characters): 6199.7 i/s - 321.54x slower
191
+
192
+ ============================ Test string length: 100 ============================
193
+ Warming up --------------------------------------
194
+ Boxed Hydrogen encrypt_encode (100 characters)
195
+ 17.506k i/100ms
196
+ Boxed Hydrogen decode_decrypt (100 characters)
197
+ 22.896k i/100ms
198
+ Boxed Hydrogen encrypt + Base64 encode (100 characters)
199
+ 14.923k i/100ms
200
+ Boxed Hydrogen decrypt + Base64 decode (100 characters)
201
+ 19.905k i/100ms
202
+ URLcrypt decrypt (100 characters)
203
+ 572.000 i/100ms
204
+ URLcrypt decrypt (100 characters)
205
+ 423.000 i/100ms
206
+ Boxed RbNaCl encrypt + Base64 encode (100 characters)
207
+ 8.262k i/100ms
208
+ Boxed RbNaCl decrypt + Base64 decode (100 characters)
209
+ 14.280k i/100ms
210
+ modp_b64_encode (100 characters)
211
+ 34.924k i/100ms
212
+ modp_b64_decode (100 characters)
213
+ 35.889k i/100ms
214
+ Base64 encode (100 characters)
215
+ 87.118k i/100ms
216
+ Base64 decode (100 characters)
217
+ 104.319k i/100ms
218
+ hydro_secretbox_encrypt (100 characters)
219
+ 14.179k i/100ms
220
+ hydro_secretbox_decrypt (100 characters)
221
+ 17.697k i/100ms
222
+ Boxed Hydrogen encrypt (100 characters)
223
+ 18.914k i/100ms
224
+ Boxed Hydrogen decrypt (100 characters)
225
+ 24.777k i/100ms
226
+ Boxed RbNaCl encrypt (100 characters)
227
+ 9.484k i/100ms
228
+ Boxed RbNaCl decrypt (100 characters)
229
+ 17.033k i/100ms
230
+ Calculating -------------------------------------
231
+ Boxed Hydrogen encrypt_encode (100 characters)
232
+ 194.262k (± 2.5%) i/s - 402.638k in 2.073959s
233
+ Boxed Hydrogen decode_decrypt (100 characters)
234
+ 263.256k (± 2.3%) i/s - 526.608k in 2.001392s
235
+ Boxed Hydrogen encrypt + Base64 encode (100 characters)
236
+ 163.047k (± 2.1%) i/s - 328.306k in 2.014443s
237
+ Boxed Hydrogen decrypt + Base64 decode (100 characters)
238
+ 219.835k (± 1.6%) i/s - 457.815k in 2.083056s
239
+ URLcrypt decrypt (100 characters)
240
+ 5.546k (± 5.1%) i/s - 11.440k in 2.068242s
241
+ URLcrypt decrypt (100 characters)
242
+ 3.972k (± 5.1%) i/s - 8.037k in 2.029004s
243
+ Boxed RbNaCl encrypt + Base64 encode (100 characters)
244
+ 91.544k (± 1.6%) i/s - 190.026k in 2.076333s
245
+ Boxed RbNaCl decrypt + Base64 decode (100 characters)
246
+ 163.167k (± 2.1%) i/s - 328.440k in 2.013833s
247
+ modp_b64_encode (100 characters)
248
+ 430.719k (± 2.9%) i/s - 873.100k in 2.028797s
249
+ modp_b64_decode (100 characters)
250
+ 445.905k (± 2.0%) i/s - 897.225k in 2.012919s
251
+ Base64 encode (100 characters)
252
+ 1.259M (± 6.8%) i/s - 2.526M in 2.016033s
253
+ Base64 decode (100 characters)
254
+ 1.694M (± 3.4%) i/s - 3.443M in 2.034358s
255
+ hydro_secretbox_encrypt (100 characters)
256
+ 154.190k (± 4.3%) i/s - 311.938k in 2.027137s
257
+ hydro_secretbox_decrypt (100 characters)
258
+ 198.795k (± 1.8%) i/s - 407.031k in 2.048137s
259
+ Boxed Hydrogen encrypt (100 characters)
260
+ 205.974k (± 2.6%) i/s - 416.108k in 2.021562s
261
+ Boxed Hydrogen decrypt (100 characters)
262
+ 276.793k (± 2.1%) i/s - 569.871k in 2.059745s
263
+ Boxed RbNaCl encrypt (100 characters)
264
+ 97.566k (± 6.2%) i/s - 199.164k in 2.049960s
265
+ Boxed RbNaCl decrypt (100 characters)
266
+ 195.296k (± 3.2%) i/s - 391.759k in 2.008041s
267
+
268
+ Comparison:
269
+ Base64 decode (100 characters): 1694236.8 i/s
270
+ Base64 encode (100 characters): 1259363.5 i/s - 1.35x slower
271
+ modp_b64_decode (100 characters): 445905.1 i/s - 3.80x slower
272
+ modp_b64_encode (100 characters): 430719.0 i/s - 3.93x slower
273
+ Boxed Hydrogen decrypt (100 characters): 276793.3 i/s - 6.12x slower
274
+ Boxed Hydrogen decode_decrypt (100 characters): 263255.9 i/s - 6.44x slower
275
+ Boxed Hydrogen decrypt + Base64 decode (100 characters): 219834.6 i/s - 7.71x slower
276
+ Boxed Hydrogen encrypt (100 characters): 205974.1 i/s - 8.23x slower
277
+ hydro_secretbox_decrypt (100 characters): 198795.4 i/s - 8.52x slower
278
+ Boxed RbNaCl decrypt (100 characters): 195295.5 i/s - 8.68x slower
279
+ Boxed Hydrogen encrypt_encode (100 characters): 194261.9 i/s - 8.72x slower
280
+ Boxed RbNaCl decrypt + Base64 decode (100 characters): 163166.6 i/s - 10.38x slower
281
+ Boxed Hydrogen encrypt + Base64 encode (100 characters): 163047.1 i/s - 10.39x slower
282
+ hydro_secretbox_encrypt (100 characters): 154189.7 i/s - 10.99x slower
283
+ Boxed RbNaCl encrypt (100 characters): 97566.3 i/s - 17.36x slower
284
+ Boxed RbNaCl encrypt + Base64 encode (100 characters): 91543.8 i/s - 18.51x slower
285
+ URLcrypt decrypt (100 characters): 3971.7 i/s - 426.57x slower
286
+
287
+ jruby 9.1.12.0 (2.3.3) 2017-06-15 33c6439 Java HotSpot(TM) 64-Bit Server VM 25.171-b11 on 1.8.0_171-b11 +jit [darwin-x86_64]
288
+ ============================ Test string length: 10 ============================
289
+ Warming up --------------------------------------
290
+ Boxed Hydrogen encrypt_encode (10 characters)
291
+ 12.150k i/100ms
292
+ Boxed Hydrogen decode_decrypt (10 characters)
293
+ 22.730k i/100ms
294
+ Boxed Hydrogen encrypt + Base64 encode (10 characters)
295
+ 15.278k i/100ms
296
+ Boxed Hydrogen decrypt + Base64 decode (10 characters)
297
+ 15.877k i/100ms
298
+ URLcrypt decrypt (10 characters)
299
+ 657.000 i/100ms
300
+ URLcrypt decrypt (10 characters)
301
+ 965.000 i/100ms
302
+ Boxed RbNaCl encrypt + Base64 encode (10 characters)
303
+ 6.613k i/100ms
304
+ Boxed RbNaCl decrypt + Base64 decode (10 characters)
305
+ 16.166k i/100ms
306
+ modp_b64_encode (10 characters)
307
+ 46.307k i/100ms
308
+ modp_b64_decode (10 characters)
309
+ 46.508k i/100ms
310
+ Base64 encode (10 characters)
311
+ 132.681k i/100ms
312
+ Base64 decode (10 characters)
313
+ 139.898k i/100ms
314
+ hydro_secretbox_encrypt (10 characters)
315
+ 17.525k i/100ms
316
+ hydro_secretbox_decrypt (10 characters)
317
+ 21.748k i/100ms
318
+ Boxed Hydrogen encrypt (10 characters)
319
+ 25.446k i/100ms
320
+ Boxed Hydrogen decrypt (10 characters)
321
+ 31.024k i/100ms
322
+ Boxed RbNaCl encrypt (10 characters)
323
+ 10.056k i/100ms
324
+ Boxed RbNaCl decrypt (10 characters)
325
+ 22.062k i/100ms
326
+ Calculating -------------------------------------
327
+ Boxed Hydrogen encrypt_encode (10 characters)
328
+ 287.688k (±11.1%) i/s - 571.050k in 2.021035s
329
+ Boxed Hydrogen decode_decrypt (10 characters)
330
+ 382.277k (± 7.5%) i/s - 772.820k in 2.037475s
331
+ Boxed Hydrogen encrypt + Base64 encode (10 characters)
332
+ 275.547k (± 9.8%) i/s - 550.008k in 2.025774s
333
+ Boxed Hydrogen decrypt + Base64 decode (10 characters)
334
+ 381.730k (± 7.6%) i/s - 762.096k in 2.012316s
335
+ URLcrypt decrypt (10 characters)
336
+ 20.220k (± 8.6%) i/s - 40.077k in 2.004832s
337
+ URLcrypt decrypt (10 characters)
338
+ 25.012k (± 6.3%) i/s - 50.180k in 2.018211s
339
+ Boxed RbNaCl encrypt + Base64 encode (10 characters)
340
+ 119.785k (± 1.5%) i/s - 244.681k in 2.043102s
341
+ Boxed RbNaCl decrypt + Base64 decode (10 characters)
342
+ 244.989k (± 2.6%) i/s - 501.146k in 2.046983s
343
+ modp_b64_encode (10 characters)
344
+ 791.206k (±11.6%) i/s - 1.574M in 2.037491s
345
+ modp_b64_decode (10 characters)
346
+ 800.112k (±13.9%) i/s - 1.581M in 2.033213s
347
+ Base64 encode (10 characters)
348
+ 4.877M (±10.7%) i/s - 9.686M in 2.023028s
349
+ Base64 decode (10 characters)
350
+ 4.839M (± 8.9%) i/s - 9.653M in 2.014841s
351
+ hydro_secretbox_encrypt (10 characters)
352
+ 248.409k (± 8.1%) i/s - 508.225k in 2.062781s
353
+ hydro_secretbox_decrypt (10 characters)
354
+ 290.747k (±14.6%) i/s - 565.448k in 2.017905s
355
+ Boxed Hydrogen encrypt (10 characters)
356
+ 308.316k (±12.5%) i/s - 610.704k in 2.026110s
357
+ Boxed Hydrogen decrypt (10 characters)
358
+ 442.958k (± 6.0%) i/s - 899.696k in 2.041178s
359
+ Boxed RbNaCl encrypt (10 characters)
360
+ 128.091k (± 3.1%) i/s - 261.456k in 2.043314s
361
+ Boxed RbNaCl decrypt (10 characters)
362
+ 292.055k (± 3.0%) i/s - 595.674k in 2.041592s
363
+
364
+ Comparison:
365
+ Base64 encode (10 characters): 4877309.5 i/s
366
+ Base64 decode (10 characters): 4838970.2 i/s - same-ish: difference falls within error
367
+ modp_b64_decode (10 characters): 800112.3 i/s - 6.10x slower
368
+ modp_b64_encode (10 characters): 791206.1 i/s - 6.16x slower
369
+ Boxed Hydrogen decrypt (10 characters): 442958.5 i/s - 11.01x slower
370
+ Boxed Hydrogen decode_decrypt (10 characters): 382276.6 i/s - 12.76x slower
371
+ Boxed Hydrogen decrypt + Base64 decode (10 characters): 381729.7 i/s - 12.78x slower
372
+ Boxed Hydrogen encrypt (10 characters): 308315.6 i/s - 15.82x slower
373
+ Boxed RbNaCl decrypt (10 characters): 292055.1 i/s - 16.70x slower
374
+ hydro_secretbox_decrypt (10 characters): 290746.7 i/s - 16.78x slower
375
+ Boxed Hydrogen encrypt_encode (10 characters): 287688.0 i/s - 16.95x slower
376
+ Boxed Hydrogen encrypt + Base64 encode (10 characters): 275547.1 i/s - 17.70x slower
377
+ hydro_secretbox_encrypt (10 characters): 248409.4 i/s - 19.63x slower
378
+ Boxed RbNaCl decrypt + Base64 decode (10 characters): 244989.2 i/s - 19.91x slower
379
+ Boxed RbNaCl encrypt (10 characters): 128090.8 i/s - 38.08x slower
380
+ Boxed RbNaCl encrypt + Base64 encode (10 characters): 119785.5 i/s - 40.72x slower
381
+ URLcrypt decrypt (10 characters): 25012.0 i/s - 195.00x slower
382
+
383
+ ============================ Test string length: 50 ============================
384
+ Warming up --------------------------------------
385
+ Boxed Hydrogen encrypt_encode (50 characters)
386
+ 21.032k i/100ms
387
+ Boxed Hydrogen decode_decrypt (50 characters)
388
+ 26.402k i/100ms
389
+ Boxed Hydrogen encrypt + Base64 encode (50 characters)
390
+ 19.139k i/100ms
391
+ Boxed Hydrogen decrypt + Base64 decode (50 characters)
392
+ 27.446k i/100ms
393
+ URLcrypt decrypt (50 characters)
394
+ 1.167k i/100ms
395
+ URLcrypt decrypt (50 characters)
396
+ 1.148k i/100ms
397
+ Boxed RbNaCl encrypt + Base64 encode (50 characters)
398
+ 9.294k i/100ms
399
+ Boxed RbNaCl decrypt + Base64 decode (50 characters)
400
+ 18.473k i/100ms
401
+ modp_b64_encode (50 characters)
402
+ 50.909k i/100ms
403
+ modp_b64_decode (50 characters)
404
+ 48.420k i/100ms
405
+ Base64 encode (50 characters)
406
+ 111.971k i/100ms
407
+ Base64 decode (50 characters)
408
+ 122.505k i/100ms
409
+ hydro_secretbox_encrypt (50 characters)
410
+ 19.626k i/100ms
411
+ hydro_secretbox_decrypt (50 characters)
412
+ 23.010k i/100ms
413
+ Boxed Hydrogen encrypt (50 characters)
414
+ 22.086k i/100ms
415
+ Boxed Hydrogen decrypt (50 characters)
416
+ 30.393k i/100ms
417
+ Boxed RbNaCl encrypt (50 characters)
418
+ 10.602k i/100ms
419
+ Boxed RbNaCl decrypt (50 characters)
420
+ 21.462k i/100ms
421
+ Calculating -------------------------------------
422
+ Boxed Hydrogen encrypt_encode (50 characters)
423
+ 252.588k (± 5.1%) i/s - 504.768k in 2.003976s
424
+ Boxed Hydrogen decode_decrypt (50 characters)
425
+ 337.169k (± 8.7%) i/s - 686.452k in 2.054257s
426
+ Boxed Hydrogen encrypt + Base64 encode (50 characters)
427
+ 224.007k (± 7.4%) i/s - 459.336k in 2.064773s
428
+ Boxed Hydrogen decrypt + Base64 decode (50 characters)
429
+ 316.608k (± 9.8%) i/s - 631.258k in 2.016766s
430
+ URLcrypt decrypt (50 characters)
431
+ 11.739k (± 5.3%) i/s - 24.507k in 2.094053s
432
+ URLcrypt decrypt (50 characters)
433
+ 10.651k (± 5.5%) i/s - 21.812k in 2.054504s
434
+ Boxed RbNaCl encrypt + Base64 encode (50 characters)
435
+ 108.665k (± 4.0%) i/s - 223.056k in 2.056047s
436
+ Boxed RbNaCl decrypt + Base64 decode (50 characters)
437
+ 220.761k (± 6.3%) i/s - 443.352k in 2.017719s
438
+ modp_b64_encode (50 characters)
439
+ 734.157k (± 8.1%) i/s - 1.476M in 2.031843s
440
+ modp_b64_decode (50 characters)
441
+ 758.413k (±10.6%) i/s - 1.501M in 2.010209s
442
+ Base64 encode (50 characters)
443
+ 2.098M (±10.3%) i/s - 4.143M in 2.002847s
444
+ Base64 decode (50 characters)
445
+ 2.589M (± 2.1%) i/s - 5.268M in 2.035185s
446
+ hydro_secretbox_encrypt (50 characters)
447
+ 238.991k (± 2.0%) i/s - 490.650k in 2.053869s
448
+ hydro_secretbox_decrypt (50 characters)
449
+ 295.545k (± 8.0%) i/s - 598.260k in 2.044677s
450
+ Boxed Hydrogen encrypt (50 characters)
451
+ 288.842k (± 8.6%) i/s - 574.236k in 2.010738s
452
+ Boxed Hydrogen decrypt (50 characters)
453
+ 406.861k (± 7.0%) i/s - 820.611k in 2.031823s
454
+ Boxed RbNaCl encrypt (50 characters)
455
+ 124.316k (± 5.7%) i/s - 254.448k in 2.054893s
456
+ Boxed RbNaCl decrypt (50 characters)
457
+ 281.933k (± 5.4%) i/s - 579.474k in 2.062261s
458
+
459
+ Comparison:
460
+ Base64 decode (50 characters): 2589472.9 i/s
461
+ Base64 encode (50 characters): 2098319.4 i/s - 1.23x slower
462
+ modp_b64_decode (50 characters): 758412.9 i/s - 3.41x slower
463
+ modp_b64_encode (50 characters): 734157.5 i/s - 3.53x slower
464
+ Boxed Hydrogen decrypt (50 characters): 406860.5 i/s - 6.36x slower
465
+ Boxed Hydrogen decode_decrypt (50 characters): 337169.2 i/s - 7.68x slower
466
+ Boxed Hydrogen decrypt + Base64 decode (50 characters): 316607.9 i/s - 8.18x slower
467
+ hydro_secretbox_decrypt (50 characters): 295545.4 i/s - 8.76x slower
468
+ Boxed Hydrogen encrypt (50 characters): 288842.1 i/s - 8.97x slower
469
+ Boxed RbNaCl decrypt (50 characters): 281932.9 i/s - 9.18x slower
470
+ Boxed Hydrogen encrypt_encode (50 characters): 252588.4 i/s - 10.25x slower
471
+ hydro_secretbox_encrypt (50 characters): 238990.6 i/s - 10.84x slower
472
+ Boxed Hydrogen encrypt + Base64 encode (50 characters): 224006.9 i/s - 11.56x slower
473
+ Boxed RbNaCl decrypt + Base64 decode (50 characters): 220761.0 i/s - 11.73x slower
474
+ Boxed RbNaCl encrypt (50 characters): 124315.9 i/s - 20.83x slower
475
+ Boxed RbNaCl encrypt + Base64 encode (50 characters): 108664.7 i/s - 23.83x slower
476
+ URLcrypt decrypt (50 characters): 10651.1 i/s - 243.12x slower
477
+
478
+ ============================ Test string length: 100 ============================
479
+ Warming up --------------------------------------
480
+ Boxed Hydrogen encrypt_encode (100 characters)
481
+ 19.580k i/100ms
482
+ Boxed Hydrogen decode_decrypt (100 characters)
483
+ 25.774k i/100ms
484
+ Boxed Hydrogen encrypt + Base64 encode (100 characters)
485
+ 16.043k i/100ms
486
+ Boxed Hydrogen decrypt + Base64 decode (100 characters)
487
+ 23.199k i/100ms
488
+ URLcrypt decrypt (100 characters)
489
+ 869.000 i/100ms
490
+ URLcrypt decrypt (100 characters)
491
+ 745.000 i/100ms
492
+ Boxed RbNaCl encrypt + Base64 encode (100 characters)
493
+ 8.906k i/100ms
494
+ Boxed RbNaCl decrypt + Base64 decode (100 characters)
495
+ 17.173k i/100ms
496
+ modp_b64_encode (100 characters)
497
+ 49.863k i/100ms
498
+ modp_b64_decode (100 characters)
499
+ 47.775k i/100ms
500
+ Base64 encode (100 characters)
501
+ 81.629k i/100ms
502
+ Base64 decode (100 characters)
503
+ 83.427k i/100ms
504
+ hydro_secretbox_encrypt (100 characters)
505
+ 17.649k i/100ms
506
+ hydro_secretbox_decrypt (100 characters)
507
+ 22.800k i/100ms
508
+ Boxed Hydrogen encrypt (100 characters)
509
+ 21.977k i/100ms
510
+ Boxed Hydrogen decrypt (100 characters)
511
+ 28.951k i/100ms
512
+ Boxed RbNaCl encrypt (100 characters)
513
+ 11.084k i/100ms
514
+ Boxed RbNaCl decrypt (100 characters)
515
+ 23.949k i/100ms
516
+ Calculating -------------------------------------
517
+ Boxed Hydrogen encrypt_encode (100 characters)
518
+ 228.895k (± 7.7%) i/s - 469.920k in 2.070094s
519
+ Boxed Hydrogen decode_decrypt (100 characters)
520
+ 310.900k (± 8.2%) i/s - 618.576k in 2.006875s
521
+ Boxed Hydrogen encrypt + Base64 encode (100 characters)
522
+ 186.403k (± 6.7%) i/s - 385.032k in 2.077730s
523
+ Boxed Hydrogen decrypt + Base64 decode (100 characters)
524
+ 275.827k (± 7.3%) i/s - 556.776k in 2.032482s
525
+ URLcrypt decrypt (100 characters)
526
+ 8.774k (± 4.6%) i/s - 18.249k in 2.084782s
527
+ URLcrypt decrypt (100 characters)
528
+ 7.435k (± 2.0%) i/s - 14.900k in 2.004813s
529
+ Boxed RbNaCl encrypt + Base64 encode (100 characters)
530
+ 103.635k (± 1.8%) i/s - 213.744k in 2.063142s
531
+ Boxed RbNaCl decrypt + Base64 decode (100 characters)
532
+ 199.801k (± 1.9%) i/s - 412.152k in 2.063602s
533
+ modp_b64_encode (100 characters)
534
+ 684.488k (±12.0%) i/s - 1.346M in 2.002535s
535
+ modp_b64_decode (100 characters)
536
+ 696.739k (± 9.0%) i/s - 1.385M in 2.008002s
537
+ Base64 encode (100 characters)
538
+ 1.252M (± 9.6%) i/s - 2.530M in 2.054306s
539
+ Base64 decode (100 characters)
540
+ 1.689M (± 2.0%) i/s - 3.421M in 2.026306s
541
+ hydro_secretbox_encrypt (100 characters)
542
+ 215.897k (± 6.7%) i/s - 441.225k in 2.055476s
543
+ hydro_secretbox_decrypt (100 characters)
544
+ 271.904k (± 9.9%) i/s - 547.200k in 2.041591s
545
+ Boxed Hydrogen encrypt (100 characters)
546
+ 252.935k (± 3.1%) i/s - 505.471k in 2.000369s
547
+ Boxed Hydrogen decrypt (100 characters)
548
+ 350.996k (± 7.6%) i/s - 723.775k in 2.079040s
549
+ Boxed RbNaCl encrypt (100 characters)
550
+ 121.533k (± 8.7%) i/s - 243.848k in 2.025902s
551
+ Boxed RbNaCl decrypt (100 characters)
552
+ 262.289k (± 7.9%) i/s - 526.878k in 2.023101s
553
+
554
+ Comparison:
555
+ Base64 decode (100 characters): 1688733.9 i/s
556
+ Base64 encode (100 characters): 1252025.3 i/s - 1.35x slower
557
+ modp_b64_decode (100 characters): 696739.3 i/s - 2.42x slower
558
+ modp_b64_encode (100 characters): 684488.2 i/s - 2.47x slower
559
+ Boxed Hydrogen decrypt (100 characters): 350996.3 i/s - 4.81x slower
560
+ Boxed Hydrogen decode_decrypt (100 characters): 310900.1 i/s - 5.43x slower
561
+ Boxed Hydrogen decrypt + Base64 decode (100 characters): 275827.0 i/s - 6.12x slower
562
+ hydro_secretbox_decrypt (100 characters): 271903.8 i/s - 6.21x slower
563
+ Boxed RbNaCl decrypt (100 characters): 262289.4 i/s - 6.44x slower
564
+ Boxed Hydrogen encrypt (100 characters): 252935.0 i/s - 6.68x slower
565
+ Boxed Hydrogen encrypt_encode (100 characters): 228894.9 i/s - 7.38x slower
566
+ hydro_secretbox_encrypt (100 characters): 215897.1 i/s - 7.82x slower
567
+ Boxed RbNaCl decrypt + Base64 decode (100 characters): 199800.9 i/s - 8.45x slower
568
+ Boxed Hydrogen encrypt + Base64 encode (100 characters): 186402.6 i/s - 9.06x slower
569
+ Boxed RbNaCl encrypt (100 characters): 121532.8 i/s - 13.90x slower
570
+ Boxed RbNaCl encrypt + Base64 encode (100 characters): 103634.6 i/s - 16.30x slower
571
+ URLcrypt decrypt (100 characters): 7435.2 i/s - 227.13x slower
572
+
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "ffi-hydrogen"
6
- spec.version = "0.1.2"
6
+ spec.version = "0.1.3"
7
7
  spec.authors = ["Marcos Minond"]
8
8
  spec.email = ["marcos.minond@mx.com"]
9
9
 
@@ -1,4 +1,4 @@
1
- #include <tmmintrin.h>
1
+ #include <x86intrin.h>
2
2
 
3
3
  #define S 9
4
4
 
metadata CHANGED
@@ -1,142 +1,142 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-hydrogen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos Minond
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-27 00:00:00.000000000 Z
11
+ date: 2018-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
+ name: ffi
14
15
  requirement: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - ">="
17
18
  - !ruby/object:Gem::Version
18
19
  version: '0'
19
- name: ffi
20
- prerelease: false
21
20
  type: :runtime
21
+ prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
+ name: benchmark-ips
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - "~>"
31
32
  - !ruby/object:Gem::Version
32
33
  version: 2.7.2
33
- name: benchmark-ips
34
- prerelease: false
35
34
  type: :development
35
+ prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.7.2
41
41
  - !ruby/object:Gem::Dependency
42
+ name: bundler
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - "~>"
45
46
  - !ruby/object:Gem::Version
46
47
  version: '1.16'
47
- name: bundler
48
- prerelease: false
49
48
  type: :development
49
+ prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.16'
55
55
  - !ruby/object:Gem::Dependency
56
+ name: mad_rubocop
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
59
  - - ">="
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- name: mad_rubocop
62
- prerelease: false
63
62
  type: :development
63
+ prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
+ name: pry
70
71
  requirement: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - ">="
73
74
  - !ruby/object:Gem::Version
74
75
  version: '0'
75
- name: pry
76
- prerelease: false
77
76
  type: :development
77
+ prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
+ name: rake
84
85
  requirement: !ruby/object:Gem::Requirement
85
86
  requirements:
86
87
  - - "~>"
87
88
  - !ruby/object:Gem::Version
88
89
  version: '10.0'
89
- name: rake
90
- prerelease: false
91
90
  type: :development
91
+ prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10.0'
97
97
  - !ruby/object:Gem::Dependency
98
+ name: rbnacl
98
99
  requirement: !ruby/object:Gem::Requirement
99
100
  requirements:
100
101
  - - "~>"
101
102
  - !ruby/object:Gem::Version
102
103
  version: '6.0'
103
- name: rbnacl
104
- prerelease: false
105
104
  type: :development
105
+ prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '6.0'
111
111
  - !ruby/object:Gem::Dependency
112
+ name: rspec
112
113
  requirement: !ruby/object:Gem::Requirement
113
114
  requirements:
114
115
  - - "~>"
115
116
  - !ruby/object:Gem::Version
116
117
  version: '3.0'
117
- name: rspec
118
- prerelease: false
119
118
  type: :development
119
+ prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '3.0'
125
125
  - !ruby/object:Gem::Dependency
126
+ name: urlcrypt
126
127
  requirement: !ruby/object:Gem::Requirement
127
128
  requirements:
128
129
  - - ">="
129
130
  - !ruby/object:Gem::Version
130
131
  version: '0'
131
- name: urlcrypt
132
- prerelease: false
133
132
  type: :development
133
+ prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- description:
139
+ description:
140
140
  email:
141
141
  - marcos.minond@mx.com
142
142
  executables: []
@@ -152,10 +152,8 @@ files:
152
152
  - LICENSE.txt
153
153
  - README.md
154
154
  - Rakefile
155
- - bench/both.rb
156
- - bench/encode.rb
157
- - bench/encrypt.rb
158
- - bench/init.rb
155
+ - benchmark.rb
156
+ - benchmark.txt
159
157
  - bin/console
160
158
  - bin/setup
161
159
  - ext/ffi/hydrogen/Rakefile
@@ -306,7 +304,7 @@ files:
306
304
  homepage: https://github.com/minond/ffi-hydrogen
307
305
  licenses: []
308
306
  metadata: {}
309
- post_install_message:
307
+ post_install_message:
310
308
  rdoc_options: []
311
309
  require_paths:
312
310
  - lib
@@ -321,9 +319,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
319
  - !ruby/object:Gem::Version
322
320
  version: '0'
323
321
  requirements: []
324
- rubyforge_project:
325
- rubygems_version: 2.6.11
326
- signing_key:
322
+ rubyforge_project:
323
+ rubygems_version: 2.7.8
324
+ signing_key:
327
325
  specification_version: 4
328
326
  summary: libhydrogen + encoding = cryptographically sound, URL safe string = libhydrogen
329
327
  + encoding
@@ -1,86 +0,0 @@
1
- require "base64"
2
- require "benchmark/ips"
3
- require "rbnacl"
4
- require "urlcrypt"
5
-
6
- require "ffi/hydrogen"
7
-
8
- require_relative "./init.rb"
9
-
10
- def suite(str)
11
- puts "============================ Test string length: #{str.size} ============================"
12
-
13
- label = "#{str.size}_char"
14
-
15
- hydrogen_key = ::FFI::Hydrogen.hydro_secretbox_keygen
16
- hydrogen_context = "benched1"
17
- hydrogen_box = ::FFI::Hydrogen::Secretbox.new(hydrogen_context, hydrogen_key)
18
- hydrogen_encrypted_encoded = hydrogen_box.encrypt_encode(str)
19
-
20
- rbnacl_key = ::RbNaCl::Random.random_bytes(::RbNaCl::SecretBox.key_bytes)
21
- rbnacl_box = ::RbNaCl::SimpleBox.from_secret_key(rbnacl_key)
22
- rbnacl_encrypted_encoded = ::Base64.encode64(rbnacl_box.encrypt(str))
23
-
24
- urlcrypt_key = "h34j4k3l25gh342o5jk46ghjk5nbjkl7nhljk34532j4k5b43hjk5g432jk6v4gjhk6f5j6gv5hj2k3g54hjk321g4hjk25g4hjk35gf4yu6f5jg5b43jk25h4jk325d"
25
- ::URLcrypt.key = [urlcrypt_key].pack("H*")
26
- urlcrypt_encrypted = ::URLcrypt.encrypt(str)
27
-
28
- Benchmark.ips do |b|
29
- b.time = 2
30
- b.warmup = 1
31
-
32
- b.report("boxed_encrypt_encode_#{label}") do |n|
33
- i = 0
34
- while i < n
35
- hydrogen_box.encrypt_encode(str)
36
- i += 1
37
- end
38
- end
39
-
40
- b.report("boxed_decode_decrypt_#{label}") do |n|
41
- i = 0
42
- while i < n
43
- hydrogen_box.decode_decrypt(hydrogen_encrypted_encoded)
44
- i += 1
45
- end
46
- end
47
-
48
- b.report("urlcrypt_encrypt_#{label}") do |n|
49
- i = 0
50
- while i < n
51
- ::URLcrypt.encrypt(str)
52
- i += 1
53
- end
54
- end
55
-
56
- b.report("urlcrypt_decrypt_#{label}") do |n|
57
- i = 0
58
- while i < n
59
- ::URLcrypt.decrypt(urlcrypt_encrypted)
60
- i += 1
61
- end
62
- end
63
-
64
- b.report("boxed_rbnacl_simplebox_encrypt_plus_base64_#{label}") do |n|
65
- i = 0
66
- while i < n
67
- ::Base64.encode64(rbnacl_box.encrypt(str))
68
- i += 1
69
- end
70
- end
71
-
72
- b.report("boxed_rbnacl_simplebox_decrypt_plus_base64_#{label}") do |n|
73
- i = 0
74
- while i < n
75
- rbnacl_box.decrypt(::Base64.decode64(rbnacl_encrypted_encoded))
76
- i += 1
77
- end
78
- end
79
-
80
- b.compare!
81
- end
82
- end
83
-
84
- TEST_STRINGS.each do |str|
85
- suite(str)
86
- end
@@ -1,57 +0,0 @@
1
- require "base64"
2
- require "benchmark/ips"
3
-
4
- require "ffi/hydrogen"
5
-
6
- require_relative "./init.rb"
7
-
8
- def suite(str)
9
- puts "============================ Test string length: #{str.size} ============================"
10
-
11
- label = "#{str.size}_char"
12
-
13
- encoded = ::FFI::Hydrogen.modp_b64_encode(str)
14
-
15
- Benchmark.ips do |b|
16
- b.time = 2
17
- b.warmup = 1
18
-
19
- b.report("modp_b64_encode_#{label}") do |n|
20
- i = 0
21
- while i < n
22
- ::FFI::Hydrogen.modp_b64_encode(str)
23
- i += 1
24
- end
25
- end
26
-
27
- b.report("modp_b64_decode_#{label}") do |n|
28
- i = 0
29
- while i < n
30
- ::FFI::Hydrogen.modp_b64_decode(encoded)
31
- i += 1
32
- end
33
- end
34
-
35
- b.report("base64_encode64_#{label}") do |n|
36
- i = 0
37
- while i < n
38
- ::Base64.encode64(str)
39
- i += 1
40
- end
41
- end
42
-
43
- b.report("base64_decode64_#{label}") do |n|
44
- i = 0
45
- while i < n
46
- ::Base64.decode64(str)
47
- i += 1
48
- end
49
- end
50
-
51
- b.compare!
52
- end
53
- end
54
-
55
- TEST_STRINGS.each do |str|
56
- suite(str)
57
- end
@@ -1,80 +0,0 @@
1
- require "benchmark/ips"
2
- require "rbnacl"
3
-
4
- require "ffi/hydrogen"
5
-
6
- require_relative "./init.rb"
7
-
8
- def suite(str)
9
- puts "============================ Test string length: #{str.size} ============================"
10
-
11
- label = "#{str.size}_char"
12
-
13
- hydrogen_key = ::FFI::Hydrogen.hydro_secretbox_keygen
14
- hydrogen_context = "benched1"
15
- hydrogen_box = ::FFI::Hydrogen::Secretbox.new(hydrogen_context, hydrogen_key)
16
- hydrogen_encrypted = hydrogen_box.encrypt(str)
17
-
18
- rbnacl_key = ::RbNaCl::Random.random_bytes(::RbNaCl::SecretBox.key_bytes)
19
- rbnacl_box = ::RbNaCl::SimpleBox.from_secret_key(rbnacl_key)
20
- rbnacl_encrypted = rbnacl_box.encrypt(str)
21
-
22
- Benchmark.ips do |b|
23
- b.time = 2
24
- b.warmup = 1
25
-
26
- b.report("hydro_secretbox_encrypt_#{label}") do |n|
27
- i = 0
28
- while i < n
29
- ::FFI::Hydrogen.hydro_secretbox_encrypt(str, hydrogen_context, hydrogen_key)
30
- i += 1
31
- end
32
- end
33
-
34
- b.report("hydro_secretbox_decrypt_#{label}") do |n|
35
- i = 0
36
- while i < n
37
- ::FFI::Hydrogen.hydro_secretbox_decrypt(hydrogen_encrypted, hydrogen_context, hydrogen_key)
38
- i += 1
39
- end
40
- end
41
-
42
- b.report("boxed_hydro_secretbox_encrypt_#{label}") do |n|
43
- i = 0
44
- while i < n
45
- hydrogen_box.encrypt(str)
46
- i += 1
47
- end
48
- end
49
-
50
- b.report("boxed_hydro_secretbox_decrypt_#{label}") do |n|
51
- i = 0
52
- while i < n
53
- hydrogen_box.decrypt(hydrogen_encrypted)
54
- i += 1
55
- end
56
- end
57
-
58
- b.report("boxed_rbnacl_simplebox_encrypt_#{label}") do |n|
59
- i = 0
60
- while i < n
61
- rbnacl_box.encrypt(str)
62
- i += 1
63
- end
64
- end
65
-
66
- b.report("boxed_rbnacl_simplebox_decrypt_#{label}") do |n|
67
- i = 0
68
- while i < n
69
- rbnacl_box.decrypt(rbnacl_encrypted)
70
- i += 1
71
- end
72
- end
73
-
74
- b.compare!
75
- end
76
- end
77
-
78
- TEST_STRINGS.each do |str|
79
- suite(str)
80
- end
@@ -1,5 +0,0 @@
1
- TEST_STRINGS = [
2
- "0123456789",
3
- "<abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv>",
4
- "<abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#^&*()_+>",
5
- ]