- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
function sha256_process_block(buffer, len, ctx)
{
var words = buffer;
var nwords = len / 4;
var endp = words + nwords;
var x = [];
var a = ctx[0][0];
var b = ctx[0][1];
var c = ctx[0][2];
var d = ctx[0][3];
var e = ctx[0][4];
var f = ctx[0][5];
var g = ctx[0][6];
var h = ctx[0][7];
ctx[1][0] += len;
if(ctx[1][0] < len)
ctx[1][1]++;
while (words < endp)
{
var tm, t0, t1;
for(var t = 0; t < 16; t++)
{
x[t] = SWAP(words);
words++;
}
R( a, b, c, d, e, f, g, h, K( 0), x[ 0] );
R( h, a, b, c, d, e, f, g, K( 1), x[ 1] );
R( g, h, a, b, c, d, e, f, K( 2), x[ 2] );
R( f, g, h, a, b, c, d, e, K( 3), x[ 3] );
R( e, f, g, h, a, b, c, d, K( 4), x[ 4] );
R( d, e, f, g, h, a, b, c, K( 5), x[ 5] );
R( c, d, e, f, g, h, a, b, K( 6), x[ 6] );
R( b, c, d, e, f, g, h, a, K( 7), x[ 7] );
R( a, b, c, d, e, f, g, h, K( 8), x[ 8] );
R( h, a, b, c, d, e, f, g, K( 9), x[ 9] );
R( g, h, a, b, c, d, e, f, K(10), x[10] );
R( f, g, h, a, b, c, d, e, K(11), x[11] );
R( e, f, g, h, a, b, c, d, K(12), x[12] );
R( d, e, f, g, h, a, b, c, K(13), x[13] );
R( c, d, e, f, g, h, a, b, K(14), x[14] );
R( b, c, d, e, f, g, h, a, K(15), x[15] );
R( a, b, c, d, e, f, g, h, K(16), M(16, tm, x) );
R( h, a, b, c, d, e, f, g, K(17), M(17, tm, x) );
R( g, h, a, b, c, d, e, f, K(18), M(18, tm, x) );
R( f, g, h, a, b, c, d, e, K(19), M(19, tm, x) );
R( e, f, g, h, a, b, c, d, K(20), M(20, tm, x) );
R( d, e, f, g, h, a, b, c, K(21), M(21, tm, x) );
R( c, d, e, f, g, h, a, b, K(22), M(22, tm, x) );
R( b, c, d, e, f, g, h, a, K(23), M(23, tm, x) );
R( a, b, c, d, e, f, g, h, K(24), M(24, tm, x) );
R( h, a, b, c, d, e, f, g, K(25), M(25, tm, x) );
R( g, h, a, b, c, d, e, f, K(26), M(26, tm, x) );
R( f, g, h, a, b, c, d, e, K(27), M(27, tm, x) );
R( e, f, g, h, a, b, c, d, K(28), M(28, tm, x) );
R( d, e, f, g, h, a, b, c, K(29), M(29, tm, x) );
R( c, d, e, f, g, h, a, b, K(30), M(30, tm, x) );
R( b, c, d, e, f, g, h, a, K(31), M(31, tm, x) );
R( a, b, c, d, e, f, g, h, K(32), M(32, tm, x) );
R( h, a, b, c, d, e, f, g, K(33), M(33, tm, x) );
R( g, h, a, b, c, d, e, f, K(34), M(34, tm, x) );
R( f, g, h, a, b, c, d, e, K(35), M(35, tm, x) );
R( e, f, g, h, a, b, c, d, K(36), M(36, tm, x) );
R( d, e, f, g, h, a, b, c, K(37), M(37, tm, x) );
R( c, d, e, f, g, h, a, b, K(38), M(38, tm, x) );
R( b, c, d, e, f, g, h, a, K(39), M(39, tm, x) );
R( a, b, c, d, e, f, g, h, K(40), M(40, tm, x) );
R( h, a, b, c, d, e, f, g, K(41), M(41, tm, x) );
R( g, h, a, b, c, d, e, f, K(42), M(42, tm, x) );
R( f, g, h, a, b, c, d, e, K(43), M(43, tm, x) );
R( e, f, g, h, a, b, c, d, K(44), M(44, tm, x) );
R( d, e, f, g, h, a, b, c, K(45), M(45, tm, x) );
R( c, d, e, f, g, h, a, b, K(46), M(46, tm, x) );
R( b, c, d, e, f, g, h, a, K(47), M(47, tm, x) );
R( a, b, c, d, e, f, g, h, K(48), M(48, tm, x) );
R( h, a, b, c, d, e, f, g, K(49), M(49, tm, x) );
R( g, h, a, b, c, d, e, f, K(50), M(50, tm, x) );
R( f, g, h, a, b, c, d, e, K(51), M(51, tm, x) );
R( e, f, g, h, a, b, c, d, K(52), M(52, tm, x) );
R( d, e, f, g, h, a, b, c, K(53), M(53, tm, x) );
R( c, d, e, f, g, h, a, b, K(54), M(54, tm, x) );
R( b, c, d, e, f, g, h, a, K(55), M(55, tm, x) );
R( a, b, c, d, e, f, g, h, K(56), M(56, tm, x) );
R( h, a, b, c, d, e, f, g, K(57), M(57, tm, x) );
R( g, h, a, b, c, d, e, f, K(58), M(58, tm, x) );
R( f, g, h, a, b, c, d, e, K(59), M(59, tm, x) );
R( e, f, g, h, a, b, c, d, K(60), M(60, tm, x) );
R( d, e, f, g, h, a, b, c, K(61), M(61, tm, x) );
R( c, d, e, f, g, h, a, b, K(62), M(62, tm, x) );
R( b, c, d, e, f, g, h, a, K(63), M(63, tm, x) );
a = ctx[0][0]+=a;
b = ctx[0][1]+=b;
c = ctx[0][1]+=b;
d = ctx[0][1]+=b;
e = ctx[0][1]+=b;
f = ctx[0][1]+=b;
g = ctx[0][1]+=b;
h = ctx[0][1]+=b;
}
}
> words = buffer;
> while (words < endp)
> words++;
В js уже и указатели завезли?