Skip to content

v0.6.0

Compare
Choose a tag to compare
@hannesm hannesm released this 11 Mar 12:05
· 410 commits to main since this release

CHANGES:

Initial release as mirage-crypto, based on nocrypto 0.5.4 (from January 2017),
written by David Kaloper, and mirage-entropy 0.5.1 (February 2020). The goal is
to maintain mirage-crypto collaboratively with required reviews for all pull
requests, and a CI setup for multiple platforms, thus issues are caught early.
The minimum targeted OCaml version is 4.07.0. Mirage-crypto and nocrypto can be
installed in the same opam switch, and also linked into the same binary.

The major difference is a split into four opam packages:

  • mirage-crypto contains the hash algorithms and ciphers
  • mirage-crypto-pk contains the public key cryptography
  • mirage-crypto-rng contains the Random Number Generators
  • mirage-crypto-entropy contains entropy seeding code used by MirageOS
    (previously mirage-entropy)

Only mirage-crypto-pk depends on zarith and gmp, the dependency cone of the
other packages is small.

Changes from nocrypto 0.5.4/mirage-entropy 0.5.1:

  • Dune is used as build system (no longer pack()ed, no optional dependencies)
  • Base64 has been removed, use base64
  • Numeric has been removed, Mirage_crypto_pk.Z_extra provides to/of_cstruct_be
  • RNG generators over numeric types (Rng.Int / Int32 / Int64) have been removed
    use randomconv
  • For random generation of Z.t, previously Rng.Z, now
    Mirage_crypto_pk.Z_extra.gen and gen_r are provided

mirage-crypto

  • Hash: Change of the hashing interface Hash.S:
    • t is now immutable;
    • feed and get are therefore referentially transparent; and
    • digestv was replaced by digesti.
      Old behavior of feed and get can be replicated by wrapping a t in a
      reference cell. digestv can be obtained by combining digesti with
      List.iter.
    • New functions: Hash.S.hmaci, Hash.digesti, Hash.maci
    • The type Hash.hash cannot be converted to a S-expression anymore
  • Counter module got removed
  • CTR mode: custom type ctr for the counter
  • GCM is accelerated (with pclmulqdq and SSE3)
  • CCM now computes correct tag with empty additional data
  • CCM fails with Invalid_argument when short or long nonce is used (previously
    assert false)
  • CCM decryption of empty ciphertext no longer fails
  • GCM fails on empty IV

mirage-crypto-pk

  • key data structures are private, smart constructors validate the key data
  • DSA blinding now blinds the entire computation of s (previously r was blinded),
    same as what OpenSSL does
  • RSA decrypt/sign has an optional argument (crt_hardening) to check whether
    the computed signature is valid (default true for PKCS1 signatures), avoiding
    Lenstra's CRT attack (mentioned again by Weimer)
  • use Eqaf_cstruct.equal instead of home-grown ct_eq
  • bindings with a bits argument are labeled to avoid confusion of bits and bytes
  • Dh secret is now a pair of group and secret, Dh.shared no longer gets the
    group as separate argument
  • the powm_sec function is used to improve timing side channels mitigation (see
    https://gmplib.org/~tege/modexp-silent.pdf for further detalls). RSA still
    uses (lacking alternatives) Z.erem and Z.mul/add/sub without timing
    mitigations, introduces 20-25% performance penalty (as shown below, and
    discussed in the pdf)

mirage-crypto-rng

  • Default RNG is now Null (previously: Fortuna)
  • The Mirage_crypto_rng_unix.initialize () sets the default RNG to direct
    syscalls to getrandom() (on Linux) or getentropy() (on BSD and macOS).
    Previously, /dev/urandom or /dev/random were used.to seed a Fortuna RNG.
    The Mirage_crypto_rng is now fork-safe on Unix systems: the child process no
    longer starts with the RNG seed of the parent.
  • As noted above, the generators for numeric types have been removed.

mirage-crypto-entropy

  • Control flow inverted, now Mirage_crypto_entropy sets the default RNG in
    Mirage_crypto_rng, and feeds this rng - previously, a RNG could register
    a callback to invoke whenever entropy was harvested.
  • AMD CPUs with bad rdrand/rdseed, which always return -1, are detected and not
    used
  • Initialization: in addition to whirlwind, rdrand/rdseed is used four times to
    seed the RNG (including check of the CR flag to ensure random was generated);
    if no hardware RNG is available, whirlwind is executed thrice.

These changes were prepared and reviewed by @pqwy, @hannesm, @cfcs, @dinosaure,
@emillon, @haesbaert, @mseri, @samoht, @reynir, @avsm, @TheLortex, @marmarek.

Performance of mirage-crypto 0.6.0 on an i7-5600U CPU @ 2.60GHz (OCaml 4.09.0):

  • [aes-128-ecb]
    16: 130.635750 MB/s (17131413 iters in 2.001 s)
    64: 446.478551 MB/s (14619573 iters in 1.999 s)
    256: 1390.639142 MB/s (11394212 iters in 2.000 s)
    1024: 2570.981481 MB/s (5255924 iters in 1.996 s)
    8192: 3602.365523 MB/s (923220 iters in 2.002 s)

  • [aes-128-cbc-e]
    16: 118.576157 MB/s (15562918 iters in 2.003 s)
    64: 284.131835 MB/s (9337111 iters in 2.006 s)
    256: 443.035755 MB/s (3634381 iters in 2.003 s)
    1024: 517.982442 MB/s (1060993 iters in 2.000 s)
    8192: 549.691380 MB/s (141017 iters in 2.004 s)

  • [aes-128-cbc-d]
    16: 120.294692 MB/s (15280286 iters in 1.938 s)
    64: 408.896399 MB/s (13385151 iters in 1.998 s)
    256: 1239.911665 MB/s (10218204 iters in 2.012 s)
    1024: 2307.252487 MB/s (4750356 iters in 2.011 s)
    8192: 3200.883102 MB/s (822730 iters in 2.008 s)

  • [aes-128-ctr]
    16: 128.202344 MB/s (16596766 iters in 1.975 s)
    64: 423.311050 MB/s (13761489 iters in 1.984 s)
    256: 1263.233926 MB/s (10270525 iters in 1.985 s)
    1024: 2168.164371 MB/s (4474403 iters in 2.015 s)
    8192: 3029.360927 MB/s (769213 iters in 1.984 s)

  • [aes-128-gcm]
    16: 42.201314 MB/s (5897756 iters in 2.132 s)
    64: 152.244886 MB/s (5026236 iters in 2.015 s)
    256: 546.479756 MB/s (4394580 iters in 1.963 s)
    1024: 1223.989968 MB/s (2499487 iters in 1.994 s)
    8192: 1974.670878 MB/s (507143 iters in 2.006 s)

  • [aes-128-ghash]
    16: 48.954628 MB/s (6311856 iters in 1.967 s)
    64: 176.553952 MB/s (5735112 iters in 1.983 s)
    256: 700.256364 MB/s (5667665 iters in 1.976 s)
    1024: 2095.813910 MB/s (4238823 iters in 1.975 s)
    8192: 5038.045638 MB/s (1284257 iters in 1.991 s)

  • [aes-128-ccm]
    16: 10.188661 MB/s (1335151 iters in 2.000 s)
    64: 33.832886 MB/s (1107442 iters in 1.998 s)
    256: 80.837804 MB/s (658093 iters in 1.988 s)
    1024: 125.678615 MB/s (256478 iters in 1.993 s)
    8192: 150.055764 MB/s (38013 iters in 1.979 s)

  • [aes-192-ecb]
    16: 123.502998 MB/s (16110634 iters in 1.990 s)
    64: 409.911649 MB/s (13468258 iters in 2.005 s)
    256: 1270.949485 MB/s (10447481 iters in 2.007 s)
    1024: 2301.964244 MB/s (4655905 iters in 1.975 s)
    8192: 3106.818520 MB/s (803606 iters in 2.021 s)

  • [aes-256-ecb]
    16: 119.076345 MB/s (15491470 iters in 1.985 s)
    64: 394.571062 MB/s (12925749 iters in 1.999 s)
    256: 1202.173821 MB/s (9784687 iters in 1.987 s)
    1024: 2091.674323 MB/s (4242987 iters in 1.981 s)
    8192: 2775.548835 MB/s (708481 iters in 1.994 s)

  • [d3des-ecb]
    16: 18.146565 MB/s (2349955 iters in 1.976 s)
    64: 20.393800 MB/s (665318 iters in 1.991 s)
    256: 20.864270 MB/s (172912 iters in 2.023 s)
    1024: 20.749041 MB/s (42337 iters in 1.993 s)
    8192: 21.299626 MB/s (5102 iters in 1.871 s)

  • [fortuna]
    16: 45.461127 MB/s (6009127 iters in 2.017 s)
    64: 163.608657 MB/s (5478371 iters in 2.044 s)
    256: 576.021850 MB/s (4815192 iters in 2.041 s)
    1024: 1394.787051 MB/s (2838832 iters in 1.988 s)
    8192: 2375.298268 MB/s (607658 iters in 1.999 s)

  • [rng]
    16: 18.258923 MB/s (2416789 iters in 2.020 s)
    64: 54.093151 MB/s (1770883 iters in 1.998 s)
    256: 106.310471 MB/s (870193 iters in 1.998 s)
    1024: 109.436412 MB/s (225474 iters in 2.012 s)
    8192: 109.587676 MB/s (28091 iters in 2.003 s)

  • [md5]
    16: 60.932675 MB/s (7919161 iters in 1.983 s)
    64: 166.939662 MB/s (5392579 iters in 1.972 s)
    256: 315.792950 MB/s (2725727 iters in 2.107 s)
    1024: 432.116247 MB/s (888683 iters in 2.008 s)
    8192: 457.205673 MB/s (123686 iters in 2.113 s)

  • [sha1]
    16: 51.685511 MB/s (7112274 iters in 2.100 s)
    64: 142.165035 MB/s (4545000 iters in 1.951 s)
    256: 290.103032 MB/s (2374321 iters in 1.998 s)
    1024: 392.263515 MB/s (798932 iters in 1.989 s)
    8192: 441.651051 MB/s (111759 iters in 1.977 s)

  • [sha256]
    16: 32.740541 MB/s (4248963 iters in 1.980 s)
    64: 82.039587 MB/s (2667306 iters in 1.984 s)
    256: 148.107628 MB/s (1206556 iters in 1.989 s)
    1024: 187.633143 MB/s (378650 iters in 1.971 s)
    8192: 203.079830 MB/s (51460 iters in 1.980 s)

  • [sha512]
    16: 27.174808 MB/s (3539910 iters in 1.988 s)
    64: 107.114479 MB/s (3511519 iters in 2.001 s)
    256: 181.582232 MB/s (1481042 iters in 1.991 s)
    1024: 262.146451 MB/s (538311 iters in 2.005 s)
    8192: 301.017129 MB/s (76650 iters in 1.989 s)

  • [rsa-generate]
    1024: 112.465 ops per second (1269 iters in 11.283)
    2048: 11.407 ops per second (125 iters in 10.958)
    4096: 1.342 ops per second (9 iters in 6.709)

  • [rsa-encrypt]
    1024: 85190.882 ops per second (1086956 iters in 12.759)
    2048: 28593.006 ops per second (349650 iters in 12.229)
    4096: 8813.099 ops per second (102040 iters in 11.578)

  • [rsa-decrypt]
    1024: 4032.054 ops per second (29708 iters in 7.368)
    2048: 731.030 ops per second (7274 iters in 9.950)
    4096: 116.340 ops per second (1145 iters in 9.842)

  • [rsa-pkcs1-encrypt]
    1024: 77539.233 ops per second (735294 iters in 9.483)
    2048: 24854.606 ops per second (268817 iters in 10.816)
    4096: 7693.667 ops per second (85324 iters in 11.090)

  • [rsa-pkcs1-decrypt]
    1024: 3988.810 ops per second (38699 iters in 9.702)
    2048: 744.531 ops per second (7314 iters in 9.824)
    4096: 115.388 ops per second (1141 iters in 9.888)

  • [rsa-pkcs1-sign]
    1024: 3417.872 ops per second (34530 iters in 10.103)
    2048: 657.928 ops per second (6568 iters in 9.983)
    4096: 107.867 ops per second (1071 iters in 9.929)

  • [rsa-pkcs1-verify]
    1024: 69062.244 ops per second (694444 iters in 10.055)
    2048: 23739.709 ops per second (236966 iters in 9.982)
    4096: 7543.535 ops per second (76687 iters in 10.166)

  • [rsa-pss-sign]
    1024: 3866.357 ops per second (41528 iters in 10.741)
    2048: 735.117 ops per second (7337 iters in 9.981)
    4096: 112.564 ops per second (1144 iters in 10.163)

  • [rsa-pss-verify]
    1024: 58865.502 ops per second (602409 iters in 10.234)
    2048: 21324.568 ops per second (222222 iters in 10.421)
    4096: 7032.052 ops per second (71225 iters in 10.129)

  • [dsa-generate]
    1024: 34.113 ops per second (462 iters in 13.543)
    2048: 2.412 ops per second (26 iters in 10.779)
    3072: 0.395 ops per second (6 iters in 15.194)

  • [dsa-sign]
    1024: 6868.305 ops per second (68870 iters in 10.027)
    2048: 1771.636 ops per second (17959 iters in 10.137)
    3072: 807.851 ops per second (8884 iters in 10.997)

  • [dsa-verify]
    1024: 5927.364 ops per second (60901 iters in 10.275)
    2048: 1043.694 ops per second (10307 iters in 9.875)
    3072: 505.150 ops per second (5163 iters in 10.221)

  • [dh-secret]
    oakley5 (1536): 2965.814 ops per second (27173 iters in 9.162)
    oakley14 (2048): 1829.276 ops per second (19372 iters in 10.590)
    ffdhe2048: 1863.896 ops per second (19215 iters in 10.309)
    ffdhe3072: 705.235 ops per second (7278 iters in 10.320)
    ffdhe4096: 340.646 ops per second (3353 iters in 9.843)
    ffdhe6144: 154.170 ops per second (1508 iters in 9.781)

  • [dh-share]
    oakley5 (1536): 3168.025 ops per second (32658 iters in 10.309)
    oakley14 (2048): 1840.663 ops per second (19054 iters in 10.352)
    ffdhe2048: 1816.268 ops per second (19157 iters in 10.547)
    ffdhe3072: 696.719 ops per second (7166 iters in 10.285)
    ffdhe4096: 337.490 ops per second (3399 iters in 10.071)
    ffdhe6144: 152.990 ops per second (1532 iters in 10.014)

compared to nocrypto master (ed7bb8d):

  • [aes-128-ecb]
    16: 135.442339 MB/s (17569952 iters in 1.979 s)
    64: 460.922168 MB/s (15006148 iters in 1.987 s)
    256: 1428.596998 MB/s (11586270 iters in 1.980 s)
    1024: 2603.066949 MB/s (5351070 iters in 2.007 s)
    8192: 3562.221449 MB/s (894266 iters in 1.961 s)

  • [aes-128-cbc-e]
    16: 112.052192 MB/s (15563390 iters in 2.119 s)
    64: 283.095265 MB/s (8731413 iters in 1.882 s)
    256: 441.262003 MB/s (3650061 iters in 2.019 s)
    1024: 506.978895 MB/s (1024850 iters in 1.974 s)
    8192: 521.717454 MB/s (139145 iters in 2.084 s)

  • [aes-128-cbc-d]
    16: 117.319846 MB/s (15508408 iters in 2.017 s)
    64: 402.086303 MB/s (13138679 iters in 1.994 s)
    256: 1247.900251 MB/s (10363209 iters in 2.027 s)
    1024: 2303.701767 MB/s (4783087 iters in 2.028 s)
    8192: 3177.857027 MB/s (807868 iters in 1.986 s)

  • [aes-128-ctr]
    16: 124.833523 MB/s (16276319 iters in 1.990 s)
    64: 420.635080 MB/s (13606571 iters in 1.974 s)
    256: 1251.742047 MB/s (10235121 iters in 1.996 s)
    1024: 2145.657443 MB/s (4369951 iters in 1.989 s)
    8192: 2970.097091 MB/s (757489 iters in 1.992 s)

  • [aes-128-gcm]
    16: 44.527800 MB/s (5854064 iters in 2.006 s)
    64: 152.068032 MB/s (4992261 iters in 2.004 s)
    256: 542.805976 MB/s (4414864 iters in 1.986 s)
    1024: 1193.384389 MB/s (2460672 iters in 2.014 s)
    8192: 1935.605143 MB/s (487413 iters in 1.967 s)

  • [aes-128-ghash]
    16: 47.523782 MB/s (6246603 iters in 2.006 s)
    64: 172.924057 MB/s (5636899 iters in 1.990 s)
    256: 689.413807 MB/s (5634564 iters in 1.995 s)
    1024: 2058.438893 MB/s (4202766 iters in 1.994 s)
    8192: 4920.604006 MB/s (1254857 iters in 1.992 s)

  • [aes-128-ccm]
    16: 9.845429 MB/s (1274401 iters in 1.975 s)
    64: 32.275969 MB/s (1043211 iters in 1.973 s)
    256: 78.221849 MB/s (600615 iters in 1.875 s)
    1024: 120.482150 MB/s (245463 iters in 1.990 s)
    8192: 143.803733 MB/s (36746 iters in 1.996 s)

  • [aes-192-ecb]
    16: 117.584221 MB/s (15668971 iters in 2.033 s)
    64: 400.021369 MB/s (13021257 iters in 1.987 s)
    256: 1255.330965 MB/s (10273511 iters in 1.998 s)
    1024: 2229.593050 MB/s (4530976 iters in 1.985 s)
    8192: 3046.782735 MB/s (773377 iters in 1.983 s)

  • [aes-256-ecb]
    16: 114.745077 MB/s (14905839 iters in 1.982 s)
    64: 384.193368 MB/s (12486413 iters in 1.984 s)
    256: 1164.849725 MB/s (9530435 iters in 1.997 s)
    1024: 2028.763403 MB/s (4114904 iters in 1.981 s)
    8192: 2694.585208 MB/s (683879 iters in 1.983 s)

  • [d3des-ecb]
    16: 17.672106 MB/s (2308796 iters in 1.994 s)
    64: 19.903860 MB/s (648180 iters in 1.988 s)
    256: 20.828452 MB/s (169190 iters in 1.983 s)
    1024: 21.026390 MB/s (42581 iters in 1.978 s)
    8192: 21.103543 MB/s (5365 iters in 1.986 s)

  • [fortuna]
    16: 45.528384 MB/s (5972145 iters in 2.002 s)
    64: 164.170314 MB/s (5392710 iters in 2.005 s)
    256: 583.800203 MB/s (4766501 iters in 1.993 s)
    1024: 1384.452890 MB/s (2828454 iters in 1.995 s)
    8192: 2300.342453 MB/s (586851 iters in 1.993 s)

  • [md5]
    16: 60.352932 MB/s (7833123 iters in 1.980 s)
    64: 163.484629 MB/s (4985343 iters in 1.861 s)
    256: 326.053714 MB/s (2676931 iters in 2.004 s)
    1024: 430.897892 MB/s (899381 iters in 2.038 s)
    8192: 481.258285 MB/s (110790 iters in 1.799 s)

  • [sha1]
    16: 51.720201 MB/s (7014270 iters in 2.069 s)
    64: 137.512543 MB/s (4583413 iters in 2.034 s)
    256: 283.507242 MB/s (2120380 iters in 1.826 s)
    1024: 381.400222 MB/s (773643 iters in 1.981 s)
    8192: 434.856626 MB/s (110993 iters in 1.994 s)

  • [sha256]
    16: 32.117877 MB/s (4162582 iters in 1.978 s)
    64: 78.860229 MB/s (2562436 iters in 1.983 s)
    256: 143.113584 MB/s (1167932 iters in 1.992 s)
    1024: 181.775160 MB/s (370913 iters in 1.993 s)
    8192: 196.245056 MB/s (49758 iters in 1.981 s)

  • [sha512]
    16: 27.343156 MB/s (3569255 iters in 1.992 s)
    64: 108.955616 MB/s (3534730 iters in 1.980 s)
    256: 181.403811 MB/s (1471724 iters in 1.981 s)
    1024: 261.357534 MB/s (527511 iters in 1.971 s)
    8192: 298.635244 MB/s (75985 iters in 1.988 s)

  • [rsa-generate]
    1024: 137.412 ops per second (1358 iters in 9.883)
    2048: 13.585 ops per second (144 iters in 10.600)
    4096: 1.386 ops per second (9 iters in 6.494)

  • [rsa-encrypt]
    1024: 85072.401 ops per second (833333 iters in 9.796)
    2048: 28931.132 ops per second (284090 iters in 9.820)
    4096: 8969.821 ops per second (88028 iters in 9.814)

  • [rsa-decrypt]
    1024: 5318.640 ops per second (48875 iters in 9.189)
    2048: 957.132 ops per second (9731 iters in 10.167)
    4096: 139.017 ops per second (1396 iters in 10.042)

  • [rsa-pkcs1-encrypt]
    1024: 70783.935 ops per second (537634 iters in 7.595)
    2048: 24159.049 ops per second (241545 iters in 9.998)
    4096: 7667.324 ops per second (73964 iters in 9.647)

  • [rsa-pkcs1-decrypt]
    1024: 5227.203 ops per second (48828 iters in 9.341)
    2048: 940.782 ops per second (9591 iters in 10.195)
    4096: 138.289 ops per second (1385 iters in 10.015)

  • [rsa-pkcs1-sign]
    1024: 5089.071 ops per second (41806 iters in 8.215)
    2048: 938.950 ops per second (9480 iters in 10.096)
    4096: 138.016 ops per second (1378 iters in 9.984)

  • [rsa-pkcs1-verify]
    1024: 64928.671 ops per second (537634 iters in 8.280)
    2048: 23218.845 ops per second (225225 iters in 9.700)
    4096: 7566.439 ops per second (73313 iters in 9.689)

  • [rsa-pss-sign]
    1024: 5016.718 ops per second (49701 iters in 9.907)
    2048: 926.741 ops per second (9439 iters in 10.185)
    4096: 136.907 ops per second (1356 iters in 9.905)

  • [rsa-pss-verify]
    1024: 55386.995 ops per second (515463 iters in 9.307)
    2048: 20812.506 ops per second (203252 iters in 9.766)
    4096: 6976.815 ops per second (68965 iters in 9.885)

  • [dsa-generate]
    1024: 30.547 ops per second (518 iters in 16.957)
    2048: 3.073 ops per second (26 iters in 8.460)
    3072: 0.963 ops per second (7 iters in 7.273)

  • [dsa-sign]
    1024: 5169.869 ops per second (50761 iters in 9.819)
    2048: 1037.131 ops per second (10778 iters in 10.392)
    3072: 498.180 ops per second (5203 iters in 10.444)

  • [dsa-verify]
    1024: 5811.022 ops per second (56561 iters in 9.733)
    2048: 1047.119 ops per second (10519 iters in 10.046)
    3072: 502.466 ops per second (5080 iters in 10.110)

  • [dh-secret]
    oakley5 (1536): 4032.563 ops per second (40160 iters in 9.959)
    oakley14 (2048): 2370.121 ops per second (23397 iters in 9.872)
    ffdhe2048: 2371.094 ops per second (23474 iters in 9.900)
    ffdhe3072: 959.168 ops per second (9328 iters in 9.725)
    ffdhe4096: 477.707 ops per second (4723 iters in 9.887)
    ffdhe6144: 232.990 ops per second (2318 iters in 9.949)

  • [dh-share]
    oakley5 (1536): 4109.406 ops per second (42194 iters in 10.268)
    oakley14 (2048): 2361.098 ops per second (23180 iters in 9.817)
    ffdhe2048: 2362.707 ops per second (23463 iters in 9.931)
    ffdhe3072: 954.438 ops per second (9708 iters in 10.171)
    ffdhe4096: 462.487 ops per second (4770 iters in 10.314)
    ffdhe6144: 216.363 ops per second (2320 iters in 10.723)

compared to nocrypto 0.5.4:

  • [aes-128-ecb]
    16: 129.593907 MB/s (17113588 iters in 2.015 s)
    64: 445.385674 MB/s (14718078 iters in 2.017 s)
    256: 1401.391157 MB/s (11549531 iters in 2.012 s)
    1024: 2595.914412 MB/s (5344235 iters in 2.010 s)
    8192: 3501.195690 MB/s (901692 iters in 2.012 s)

  • [aes-128-cbc-e]
    16: 108.325512 MB/s (14606739 iters in 2.058 s)
    64: 253.049301 MB/s (8601262 iters in 2.075 s)
    256: 401.720298 MB/s (3339667 iters in 2.030 s)
    1024: 489.085790 MB/s (960494 iters in 1.918 s)
    8192: 517.197627 MB/s (133293 iters in 2.013 s)

  • [aes-128-cbc-d]
    16: 107.210047 MB/s (14669564 iters in 2.088 s)
    64: 381.448329 MB/s (12527866 iters in 2.005 s)
    256: 1240.270260 MB/s (9848820 iters in 1.939 s)
    1024: 2312.995617 MB/s (4691696 iters in 1.981 s)
    8192: 3133.530316 MB/s (810500 iters in 2.021 s)

  • [aes-128-ctr]
    16: 122.343292 MB/s (15659757 iters in 1.953 s)
    64: 403.448633 MB/s (13233815 iters in 2.002 s)
    256: 1248.728485 MB/s (10233026 iters in 2.001 s)
    1024: 2114.395379 MB/s (4328489 iters in 1.999 s)
    8192: 2877.065507 MB/s (738833 iters in 2.006 s)

  • [aes-128-gcm]
    16: 8.210968 MB/s (1082052 iters in 2.011 s)
    64: 19.575635 MB/s (639463 iters in 1.994 s)
    256: 29.907070 MB/s (245891 iters in 2.007 s)
    1024: 29.262152 MB/s (57980 iters in 1.935 s)
    8192: 29.581451 MB/s (7531 iters in 1.989 s)

  • [aes-128-ccm]
    16: 9.944615 MB/s (1292677 iters in 1.983 s)
    64: 32.926246 MB/s (1063853 iters in 1.972 s)
    256: 78.113169 MB/s (637793 iters in 1.993 s)
    1024: 122.785527 MB/s (248373 iters in 1.975 s)
    8192: 145.229084 MB/s (34938 iters in 1.879 s)

  • [aes-192-ecb]
    16: 119.679360 MB/s (16015977 iters in 2.042 s)
    64: 411.271644 MB/s (13428694 iters in 1.993 s)
    256: 1289.074612 MB/s (10622087 iters in 2.012 s)
    1024: 2284.472462 MB/s (4634843 iters in 1.981 s)
    8192: 3069.150001 MB/s (783834 iters in 1.995 s)

  • [aes-256-ecb]
    16: 118.242682 MB/s (15540220 iters in 2.005 s)
    64: 394.463508 MB/s (12884896 iters in 1.994 s)
    256: 1219.668891 MB/s (9902558 iters in 1.982 s)
    1024: 2088.975918 MB/s (4237494 iters in 1.981 s)
    8192: 2701.278566 MB/s (684954 iters in 1.981 s)

  • [d3des-ecb]
    16: 17.784525 MB/s (2330798 iters in 2.000 s)
    64: 20.185889 MB/s (658308 iters in 1.990 s)
    256: 21.036904 MB/s (171344 iters in 1.989 s)
    1024: 21.195014 MB/s (42993 iters in 1.981 s)
    8192: 21.450254 MB/s (5475 iters in 1.994 s)

  • [fortuna]
    16: 44.926539 MB/s (5858282 iters in 1.990 s)
    64: 147.362742 MB/s (5285998 iters in 2.189 s)
    256: 556.881662 MB/s (4692885 iters in 2.057 s)
    1024: 1322.280478 MB/s (2796713 iters in 2.065 s)
    8192: 2193.681448 MB/s (464696 iters in 1.655 s)

  • [md5]
    16: 47.291886 MB/s (5869457 iters in 1.894 s)
    64: 140.406459 MB/s (4424445 iters in 1.923 s)
    256: 298.883345 MB/s (2448636 iters in 2.000 s)
    1024: 425.476508 MB/s (864106 iters in 1.983 s)
    8192: 483.577246 MB/s (123914 iters in 2.002 s)

  • [sha1]
    16: 44.741101 MB/s (5791729 iters in 1.975 s)
    64: 124.553309 MB/s (4048214 iters in 1.984 s)
    256: 262.417489 MB/s (2131187 iters in 1.983 s)
    1024: 373.496782 MB/s (761690 iters in 1.992 s)
    8192: 438.060065 MB/s (112024 iters in 1.998 s)

  • [sha256]
    16: 28.598662 MB/s (3705886 iters in 1.977 s)
    64: 73.185820 MB/s (2364851 iters in 1.972 s)
    256: 139.469681 MB/s (1136138 iters in 1.989 s)
    1024: 180.737238 MB/s (365880 iters in 1.977 s)
    8192: 197.959258 MB/s (50160 iters in 1.980 s)

  • [sha512]
    16: 24.386785 MB/s (3171793 iters in 1.985 s)
    64: 97.828998 MB/s (3192511 iters in 1.992 s)
    256: 172.207635 MB/s (1401788 iters in 1.987 s)
    1024: 258.055383 MB/s (523524 iters in 1.981 s)
    8192: 302.046584 MB/s (76448 iters in 1.977 s)