Skip to content

Instantly share code, notes, and snippets.

@xtrasmal
Created December 3, 2018 13:10
Show Gist options
  • Select an option

  • Save xtrasmal/f747bbd6df1a0b581a9a69c0e2570166 to your computer and use it in GitHub Desktop.

Select an option

Save xtrasmal/f747bbd6df1a0b581a9a69c0e2570166 to your computer and use it in GitHub Desktop.

Revisions

  1. Xander Smalbil created this gist Dec 3, 2018.
    46 changes: 46 additions & 0 deletions 1.test.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    <?php
    echo "Building data...";
    $data = "";
    for($i = 0; $i < 1500; $i++)
    $data .= sha1("H:k - $i - k:H");

    echo "OK! (".strlen($data)." bytes)".PHP_EOL;

    $res = [];

    echo "Testing hashes.....".PHP_EOL;

    foreach (hash_algos() as $algo) {
    $time = microtime(1);
    $hash = hash($algo, $data);
    $time = (microtime(1) - $time) * 1000;
    $length = strlen($hash);

    $res["$time"][] = [
    "algo" => "HEX-$algo",
    "length" => "$length",
    "time" => sprintf("%.8f", $time)
    ];

    $time = microtime(1);
    hash($algo, $data, 1);
    $time = (microtime(1) - $time) * 1000;

    $res["$time"][] = [
    "algo" => "RAW-$algo",
    "length" => "$length",
    "time" => sprintf("%.8f", $time)
    ];
    }

    ksort($res);
    $i = 0;

    echo "Results:".PHP_EOL;
    echo "Posit. Time in ms Type-Hash algo Hash length".PHP_EOL;

    foreach($res as $sres){
    foreach($sres as $result){
    echo sprintf("%5d. %12s ms %-20s %-2d bytes", $i++, $result['time'], $result['algo'], $result['length']).PHP_EOL;
    }
    }
    108 changes: 108 additions & 0 deletions 2.hash-algo-metrics.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,108 @@
    Building data...OK! (60000 bytes)
    Testing hashes.....
    Results:
    Posit. Time in ms Type-Hash algo Hash length
    0. 0.03910065 ms RAW-adler32 8 bytes
    1. 0.04005432 ms HEX-adler32 8 bytes
    2. 0.07081032 ms HEX-fnv132 8 bytes
    3. 0.07081032 ms RAW-fnv1a32 8 bytes
    4. 0.07200241 ms RAW-fnv132 8 bytes
    5. 0.07200241 ms HEX-fnv1a32 8 bytes
    6. 0.10085106 ms RAW-md4 32 bytes
    7. 0.10299683 ms HEX-md4 32 bytes
    8. 0.12111664 ms HEX-joaat 8 bytes
    9. 0.12111664 ms RAW-joaat 8 bytes
    10. 0.13899803 ms HEX-md5 32 bytes
    11. 0.13899803 ms RAW-md5 32 bytes
    12. 0.17905235 ms HEX-sha1 40 bytes
    13. 0.21409988 ms RAW-tiger128,3 32 bytes
    14. 0.21696091 ms RAW-sha1 40 bytes
    15. 0.23317337 ms HEX-tiger160,3 40 bytes
    16. 0.24890900 ms RAW-crc32b 8 bytes
    17. 0.24986267 ms HEX-crc32b 8 bytes
    18. 0.25296211 ms HEX-tiger128,3 32 bytes
    19. 0.25296211 ms RAW-tiger160,3 40 bytes
    20. 0.25296211 ms RAW-tiger192,3 48 bytes
    21. 0.25391579 ms HEX-crc32 8 bytes
    22. 0.25391579 ms RAW-crc32 8 bytes
    23. 0.26512146 ms HEX-tiger192,3 48 bytes
    24. 0.26702881 ms RAW-haval128,3 32 bytes
    25. 0.26702881 ms HEX-haval192,3 48 bytes
    26. 0.26702881 ms HEX-haval256,3 64 bytes
    27. 0.26798248 ms RAW-haval160,3 40 bytes
    28. 0.26798248 ms RAW-haval192,3 48 bytes
    29. 0.26798248 ms HEX-haval224,3 56 bytes
    30. 0.26798248 ms RAW-haval224,3 56 bytes
    31. 0.26822090 ms RAW-haval256,3 64 bytes
    32. 0.26893616 ms HEX-haval160,3 40 bytes
    33. 0.26917458 ms HEX-haval128,3 32 bytes
    34. 0.28586388 ms RAW-fnv164 16 bytes
    35. 0.28896332 ms HEX-fnv1a64 16 bytes
    36. 0.29397011 ms RAW-ripemd128 32 bytes
    37. 0.29397011 ms HEX-fnv164 16 bytes
    38. 0.30016899 ms RAW-ripemd256 64 bytes
    39. 0.30612946 ms RAW-tiger160,4 40 bytes
    40. 0.30684471 ms RAW-tiger192,4 48 bytes
    41. 0.31495094 ms HEX-ripemd128 32 bytes
    42. 0.31805038 ms HEX-tiger160,4 40 bytes
    43. 0.32114983 ms HEX-tiger192,4 48 bytes
    44. 0.32496452 ms HEX-ripemd256 64 bytes
    45. 0.32615662 ms RAW-fnv1a64 16 bytes
    46. 0.35285950 ms RAW-tiger128,4 32 bytes
    47. 0.40698051 ms HEX-tiger128,4 32 bytes
    48. 0.41508675 ms HEX-ripemd160 40 bytes
    49. 0.43010712 ms RAW-ripemd160 40 bytes
    50. 0.43797493 ms HEX-haval256,4 64 bytes
    51. 0.44488907 ms RAW-ripemd320 80 bytes
    52. 0.44798851 ms HEX-haval192,4 48 bytes
    53. 0.45013428 ms HEX-haval160,4 40 bytes
    54. 0.45108795 ms HEX-haval128,4 32 bytes
    55. 0.45108795 ms RAW-haval128,4 32 bytes
    56. 0.45108795 ms RAW-haval160,4 40 bytes
    57. 0.45180321 ms RAW-haval192,4 48 bytes
    58. 0.45204163 ms HEX-haval224,4 56 bytes
    59. 0.45895576 ms RAW-sha256 64 bytes
    60. 0.46491623 ms HEX-sha256 64 bytes
    61. 0.46706200 ms HEX-ripemd320 80 bytes
    62. 0.47206879 ms RAW-haval224,4 56 bytes
    63. 0.47612190 ms RAW-sha224 56 bytes
    64. 0.48995018 ms RAW-haval256,4 64 bytes
    65. 0.54979324 ms HEX-haval256,5 64 bytes
    66. 0.55098534 ms HEX-haval192,5 48 bytes
    67. 0.55098534 ms RAW-haval192,5 48 bytes
    68. 0.55098534 ms RAW-haval224,5 56 bytes
    69. 0.55098534 ms RAW-haval256,5 64 bytes
    70. 0.55217743 ms HEX-haval224,5 56 bytes
    71. 0.55599213 ms HEX-sha224 56 bytes
    72. 0.57506561 ms RAW-haval128,5 32 bytes
    73. 0.63204765 ms RAW-haval160,5 40 bytes
    74. 0.67496300 ms HEX-haval160,5 40 bytes
    75. 0.71191788 ms HEX-haval128,5 32 bytes
    76. 0.76794624 ms HEX-sha512 128 bytes
    77. 0.78988075 ms RAW-sha512/256 64 bytes
    78. 0.79011917 ms HEX-sha512/224 56 bytes
    79. 0.79202652 ms RAW-sha384 96 bytes
    80. 0.79202652 ms HEX-sha512/256 64 bytes
    81. 0.79298019 ms HEX-sha384 96 bytes
    82. 0.79321861 ms RAW-sha512/224 56 bytes
    83. 0.80108643 ms RAW-sha512 128 bytes
    84. 1.27696991 ms RAW-whirlpool 128 bytes
    85. 1.31297112 ms HEX-whirlpool 128 bytes
    86. 1.45196915 ms RAW-gost-crypto 64 bytes
    87. 1.46794319 ms HEX-gost-crypto 64 bytes
    88. 1.47008896 ms RAW-gost 64 bytes
    89. 1.53398514 ms HEX-gost 64 bytes
    90. 3.60107422 ms HEX-snefru256 64 bytes
    91. 3.62896919 ms RAW-snefru 64 bytes
    92. 3.65900993 ms RAW-snefru256 64 bytes
    93. 3.71098518 ms HEX-snefru 64 bytes
    94. 6.31499290 ms RAW-sha3-224 56 bytes
    95. 6.44183159 ms HEX-sha3-224 56 bytes
    96. 6.46901131 ms RAW-sha3-256 64 bytes
    97. 6.48403168 ms HEX-sha3-256 64 bytes
    98. 7.85994530 ms RAW-md2 32 bytes
    99. 8.05807114 ms HEX-md2 32 bytes
    100. 8.41379166 ms HEX-sha3-384 96 bytes
    101. 8.57901573 ms RAW-sha3-384 96 bytes
    102. 11.99913025 ms HEX-sha3-512 128 bytes
    103. 12.29000092 ms RAW-sha3-512 128 bytes