sdfsdfs
This commit is contained in:
74
node_modules/hash.js/lib/hash/sha/1.js
generated
vendored
Normal file
74
node_modules/hash.js/lib/hash/sha/1.js
generated
vendored
Normal file
@@ -0,0 +1,74 @@
|
||||
'use strict';
|
||||
|
||||
var utils = require('../utils');
|
||||
var common = require('../common');
|
||||
var shaCommon = require('./common');
|
||||
|
||||
var rotl32 = utils.rotl32;
|
||||
var sum32 = utils.sum32;
|
||||
var sum32_5 = utils.sum32_5;
|
||||
var ft_1 = shaCommon.ft_1;
|
||||
var BlockHash = common.BlockHash;
|
||||
|
||||
var sha1_K = [
|
||||
0x5A827999, 0x6ED9EBA1,
|
||||
0x8F1BBCDC, 0xCA62C1D6
|
||||
];
|
||||
|
||||
function SHA1() {
|
||||
if (!(this instanceof SHA1))
|
||||
return new SHA1();
|
||||
|
||||
BlockHash.call(this);
|
||||
this.h = [
|
||||
0x67452301, 0xefcdab89, 0x98badcfe,
|
||||
0x10325476, 0xc3d2e1f0 ];
|
||||
this.W = new Array(80);
|
||||
}
|
||||
|
||||
utils.inherits(SHA1, BlockHash);
|
||||
module.exports = SHA1;
|
||||
|
||||
SHA1.blockSize = 512;
|
||||
SHA1.outSize = 160;
|
||||
SHA1.hmacStrength = 80;
|
||||
SHA1.padLength = 64;
|
||||
|
||||
SHA1.prototype._update = function _update(msg, start) {
|
||||
var W = this.W;
|
||||
|
||||
for (var i = 0; i < 16; i++)
|
||||
W[i] = msg[start + i];
|
||||
|
||||
for(; i < W.length; i++)
|
||||
W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);
|
||||
|
||||
var a = this.h[0];
|
||||
var b = this.h[1];
|
||||
var c = this.h[2];
|
||||
var d = this.h[3];
|
||||
var e = this.h[4];
|
||||
|
||||
for (i = 0; i < W.length; i++) {
|
||||
var s = ~~(i / 20);
|
||||
var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);
|
||||
e = d;
|
||||
d = c;
|
||||
c = rotl32(b, 30);
|
||||
b = a;
|
||||
a = t;
|
||||
}
|
||||
|
||||
this.h[0] = sum32(this.h[0], a);
|
||||
this.h[1] = sum32(this.h[1], b);
|
||||
this.h[2] = sum32(this.h[2], c);
|
||||
this.h[3] = sum32(this.h[3], d);
|
||||
this.h[4] = sum32(this.h[4], e);
|
||||
};
|
||||
|
||||
SHA1.prototype._digest = function digest(enc) {
|
||||
if (enc === 'hex')
|
||||
return utils.toHex32(this.h, 'big');
|
||||
else
|
||||
return utils.split32(this.h, 'big');
|
||||
};
|
Reference in New Issue
Block a user