legacy.d.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /**
  2. SHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.
  3. Don't use them in a new protocol. What "weak" means:
  4. - Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.
  5. - No practical pre-image attacks (only theoretical, 2^123.4)
  6. - HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151
  7. * @module
  8. */
  9. import { HashMD } from './_md.ts';
  10. import { type CHash } from './utils.ts';
  11. /** SHA1 legacy hash class. */
  12. export declare class SHA1 extends HashMD<SHA1> {
  13. private A;
  14. private B;
  15. private C;
  16. private D;
  17. private E;
  18. constructor();
  19. protected get(): [number, number, number, number, number];
  20. protected set(A: number, B: number, C: number, D: number, E: number): void;
  21. protected process(view: DataView, offset: number): void;
  22. protected roundClean(): void;
  23. destroy(): void;
  24. }
  25. /** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */
  26. export declare const sha1: CHash;
  27. /** MD5 legacy hash class. */
  28. export declare class MD5 extends HashMD<MD5> {
  29. private A;
  30. private B;
  31. private C;
  32. private D;
  33. constructor();
  34. protected get(): [number, number, number, number];
  35. protected set(A: number, B: number, C: number, D: number): void;
  36. protected process(view: DataView, offset: number): void;
  37. protected roundClean(): void;
  38. destroy(): void;
  39. }
  40. /**
  41. * MD5 (RFC 1321) legacy hash function. It was cryptographically broken.
  42. * MD5 architecture is similar to SHA1, with some differences:
  43. * - Reduced output length: 16 bytes (128 bit) instead of 20
  44. * - 64 rounds, instead of 80
  45. * - Little-endian: could be faster, but will require more code
  46. * - Non-linear index selection: huge speed-up for unroll
  47. * - Per round constants: more memory accesses, additional speed-up for unroll
  48. */
  49. export declare const md5: CHash;
  50. export declare class RIPEMD160 extends HashMD<RIPEMD160> {
  51. private h0;
  52. private h1;
  53. private h2;
  54. private h3;
  55. private h4;
  56. constructor();
  57. protected get(): [number, number, number, number, number];
  58. protected set(h0: number, h1: number, h2: number, h3: number, h4: number): void;
  59. protected process(view: DataView, offset: number): void;
  60. protected roundClean(): void;
  61. destroy(): void;
  62. }
  63. /**
  64. * RIPEMD-160 - a legacy hash function from 1990s.
  65. * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
  66. * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf
  67. */
  68. export declare const ripemd160: CHash;
  69. //# sourceMappingURL=legacy.d.ts.map