MCPcopy
hub / github.com/IvanMathy/Boop / binl

Function binl

Boop/Boop/scripts/lib/hashes.js:552–643  ·  view source on GitHub ↗

* Calculate the MD5 of an array of little-endian words, and a bit length.

(x, len)

Source from the content-addressed store, hash-verified

550 */
551
552 function binl(x, len) {
553 var i, olda, oldb, oldc, oldd,
554 a = 1732584193,
555 b = -271733879,
556 c = -1732584194,
557 d = 271733878;
558
559 /* append padding */
560 x[len >> 5] |= 0x80 << ((len) % 32);
561 x[(((len + 64) >>> 9) << 4) + 14] = len;
562
563 for (i = 0; i < x.length; i += 16) {
564 olda = a;
565 oldb = b;
566 oldc = c;
567 oldd = d;
568
569 a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
570 d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
571 c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
572 b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
573 a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
574 d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
575 c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
576 b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
577 a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
578 d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
579 c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
580 b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
581 a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
582 d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
583 c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
584 b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
585
586 a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
587 d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
588 c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
589 b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
590 a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
591 d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
592 c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
593 b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
594 a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
595 d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
596 c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
597 b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
598 a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
599 d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
600 c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
601 b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
602
603 a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
604 d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
605 c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
606 b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
607 a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
608 d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
609 c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);

Callers 2

rstrFunction · 0.85
rstr_hmacFunction · 0.85

Calls 9

md5_ffFunction · 0.85
md5_ggFunction · 0.85
md5_hhFunction · 0.85
md5_iiFunction · 0.85
safe_addFunction · 0.85
rmd160_fFunction · 0.85
rmd160_K1Function · 0.85
bit_rolFunction · 0.85
rmd160_K2Function · 0.85

Tested by

no test coverage detected