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 +4 -4
- data/Rakefile +0 -7
- data/benchmark.rb +185 -0
- data/benchmark.txt +572 -0
- data/ffi-hydrogen.gemspec +1 -1
- data/vendor/libhydrogen/impl/gimli-core/sse2.h +1 -1
- metadata +28 -30
- data/bench/both.rb +0 -86
- data/bench/encode.rb +0 -57
- data/bench/encrypt.rb +0 -80
- data/bench/init.rb +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b354f8b31c13a98f4e2b428460c3e500b69ad7950d262c3f52289ce7be980e2
|
|
4
|
+
data.tar.gz: c514a4652a44f06e7f9ce0b05dafe0e9e4af77d35eb74c3510aaf7ad17d5df3e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7f4b4c58a020a134abb56fd2ac9560696e4e0ab2a51e1e49568d107f3bc539632e3ac8652e511bf7dba6e4137663ab636e006c766a875b3c5367f2b2e4a41865
|
|
7
|
+
data.tar.gz: 7a9fcb191ff8304d783c01aeb263f1e81e8f05ae69097ad8e853f5e36b442faca9d49cb3344ebe79395052687bf93fd6ab406ebdfd5751b3369ce2d8bb1c3122
|
data/Rakefile
CHANGED
data/benchmark.rb
ADDED
|
@@ -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
|
data/benchmark.txt
ADDED
|
@@ -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
|
+
|
data/ffi-hydrogen.gemspec
CHANGED
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.
|
|
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
|
+
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
|
-
-
|
|
156
|
-
-
|
|
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.
|
|
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
|
data/bench/both.rb
DELETED
|
@@ -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
|
data/bench/encode.rb
DELETED
|
@@ -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
|
data/bench/encrypt.rb
DELETED
|
@@ -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
|