corrade-nucleus-nucleons
/base/000_base/node_modules/cryptojs/lib/SHA1.js |
@@ -0,0 +1,86 @@ |
(function(){ |
|
var C = (typeof window === 'undefined') ? require('./Crypto').Crypto : window.Crypto; |
|
// Shortcuts |
var util = C.util, |
charenc = C.charenc, |
UTF8 = charenc.UTF8, |
Binary = charenc.Binary; |
|
// Public API |
var SHA1 = C.SHA1 = function (message, options) { |
var digestbytes = util.wordsToBytes(SHA1._sha1(message)); |
return options && options.asBytes ? digestbytes : |
options && options.asString ? Binary.bytesToString(digestbytes) : |
util.bytesToHex(digestbytes); |
}; |
|
// The core |
SHA1._sha1 = function (message) { |
|
// Convert to byte array |
if (message.constructor == String) message = UTF8.stringToBytes(message); |
/* else, assume byte array already */ |
|
var m = util.bytesToWords(message), |
l = message.length * 8, |
w = [], |
H0 = 1732584193, |
H1 = -271733879, |
H2 = -1732584194, |
H3 = 271733878, |
H4 = -1009589776; |
|
// Padding |
m[l >> 5] |= 0x80 << (24 - l % 32); |
m[((l + 64 >>> 9) << 4) + 15] = l; |
|
for (var i = 0; i < m.length; i += 16) { |
|
var a = H0, |
b = H1, |
c = H2, |
d = H3, |
e = H4; |
|
for (var j = 0; j < 80; j++) { |
|
if (j < 16) w[j] = m[i + j]; |
else { |
var n = w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16]; |
w[j] = (n << 1) | (n >>> 31); |
} |
|
var t = ((H0 << 5) | (H0 >>> 27)) + H4 + (w[j] >>> 0) + ( |
j < 20 ? (H1 & H2 | ~H1 & H3) + 1518500249 : |
j < 40 ? (H1 ^ H2 ^ H3) + 1859775393 : |
j < 60 ? (H1 & H2 | H1 & H3 | H2 & H3) - 1894007588 : |
(H1 ^ H2 ^ H3) - 899497514); |
|
H4 = H3; |
H3 = H2; |
H2 = (H1 << 30) | (H1 >>> 2); |
H1 = H0; |
H0 = t; |
|
} |
|
H0 += a; |
H1 += b; |
H2 += c; |
H3 += d; |
H4 += e; |
|
} |
|
return [H0, H1, H2, H3, H4]; |
|
}; |
|
// Package private blocksize |
SHA1._blocksize = 16; |
|
SHA1._digestsize = 20; |
|
})(); |