GenerateAllHashes.mjs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /**
  2. * @author n1474335 [n1474335@gmail.com]
  3. * @copyright Crown Copyright 2016
  4. * @license Apache-2.0
  5. */
  6. import Operation from "../Operation";
  7. import Utils from "../Utils";
  8. import MD2 from "./MD2";
  9. import MD4 from "./MD4";
  10. import MD5 from "./MD5";
  11. import MD6 from "./MD6";
  12. import SHA0 from "./SHA0";
  13. import SHA1 from "./SHA1";
  14. import SHA2 from "./SHA2";
  15. import SHA3 from "./SHA3";
  16. import Keccak from "./Keccak";
  17. import Shake from "./Shake";
  18. import RIPEMD from "./RIPEMD";
  19. import HAS160 from "./HAS160";
  20. import Whirlpool from "./Whirlpool";
  21. import SSDEEP from "./SSDEEP";
  22. import CTPH from "./CTPH";
  23. import Fletcher8Checksum from "./Fletcher8Checksum";
  24. import Fletcher16Checksum from "./Fletcher16Checksum";
  25. import Fletcher32Checksum from "./Fletcher32Checksum";
  26. import Fletcher64Checksum from "./Fletcher64Checksum";
  27. import Adler32Checksum from "./Adler32Checksum";
  28. import CRC16Checksum from "./CRC16Checksum";
  29. import CRC32Checksum from "./CRC32Checksum";
  30. /**
  31. * Generate all hashes operation
  32. */
  33. class GenerateAllHashes extends Operation {
  34. /**
  35. * GenerateAllHashes constructor
  36. */
  37. constructor() {
  38. super();
  39. this.name = "Generate all hashes";
  40. this.module = "Crypto";
  41. this.description = "Generates all available hashes and checksums for the input.";
  42. this.infoURL = "https://wikipedia.org/wiki/Comparison_of_cryptographic_hash_functions";
  43. this.inputType = "ArrayBuffer";
  44. this.outputType = "string";
  45. this.args = [];
  46. }
  47. /**
  48. * @param {ArrayBuffer} input
  49. * @param {Object[]} args
  50. * @returns {string}
  51. */
  52. run(input, args) {
  53. const arrayBuffer = input,
  54. str = Utils.arrayBufferToStr(arrayBuffer, false),
  55. byteArray = new Uint8Array(arrayBuffer),
  56. output = "MD2: " + (new MD2()).run(arrayBuffer, []) +
  57. "\nMD4: " + (new MD4()).run(arrayBuffer, []) +
  58. "\nMD5: " + (new MD5()).run(arrayBuffer, []) +
  59. "\nMD6: " + (new MD6()).run(str, []) +
  60. "\nSHA0: " + (new SHA0()).run(arrayBuffer, []) +
  61. "\nSHA1: " + (new SHA1()).run(arrayBuffer, []) +
  62. "\nSHA2 224: " + (new SHA2()).run(arrayBuffer, ["224"]) +
  63. "\nSHA2 256: " + (new SHA2()).run(arrayBuffer, ["256"]) +
  64. "\nSHA2 384: " + (new SHA2()).run(arrayBuffer, ["384"]) +
  65. "\nSHA2 512: " + (new SHA2()).run(arrayBuffer, ["512"]) +
  66. "\nSHA3 224: " + (new SHA3()).run(arrayBuffer, ["224"]) +
  67. "\nSHA3 256: " + (new SHA3()).run(arrayBuffer, ["256"]) +
  68. "\nSHA3 384: " + (new SHA3()).run(arrayBuffer, ["384"]) +
  69. "\nSHA3 512: " + (new SHA3()).run(arrayBuffer, ["512"]) +
  70. "\nKeccak 224: " + (new Keccak()).run(arrayBuffer, ["224"]) +
  71. "\nKeccak 256: " + (new Keccak()).run(arrayBuffer, ["256"]) +
  72. "\nKeccak 384: " + (new Keccak()).run(arrayBuffer, ["384"]) +
  73. "\nKeccak 512: " + (new Keccak()).run(arrayBuffer, ["512"]) +
  74. "\nShake 128: " + (new Shake()).run(arrayBuffer, ["128", 256]) +
  75. "\nShake 256: " + (new Shake()).run(arrayBuffer, ["256", 512]) +
  76. "\nRIPEMD-128: " + (new RIPEMD()).run(arrayBuffer, ["128"]) +
  77. "\nRIPEMD-160: " + (new RIPEMD()).run(arrayBuffer, ["160"]) +
  78. "\nRIPEMD-256: " + (new RIPEMD()).run(arrayBuffer, ["256"]) +
  79. "\nRIPEMD-320: " + (new RIPEMD()).run(arrayBuffer, ["320"]) +
  80. "\nHAS-160: " + (new HAS160()).run(arrayBuffer, []) +
  81. "\nWhirlpool-0: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool-0"]) +
  82. "\nWhirlpool-T: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool-T"]) +
  83. "\nWhirlpool: " + (new Whirlpool()).run(arrayBuffer, ["Whirlpool"]) +
  84. "\nSSDEEP: " + (new SSDEEP()).run(str) +
  85. "\nCTPH: " + (new CTPH()).run(str) +
  86. "\n\nChecksums:" +
  87. "\nFletcher-8: " + (new Fletcher8Checksum).run(byteArray, []) +
  88. "\nFletcher-16: " + (new Fletcher16Checksum).run(byteArray, []) +
  89. "\nFletcher-32: " + (new Fletcher32Checksum).run(byteArray, []) +
  90. "\nFletcher-64: " + (new Fletcher64Checksum).run(byteArray, []) +
  91. "\nAdler-32: " + (new Adler32Checksum).run(byteArray, []) +
  92. "\nCRC-16: " + (new CRC16Checksum).run(str, []) +
  93. "\nCRC-32: " + (new CRC32Checksum).run(str, []);
  94. return output;
  95. }
  96. }
  97. export default GenerateAllHashes;