ffi-hydrogen 0.1.2 → 0.1.3

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.
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
- ]