Skip to content

Commit 4317bff

Browse files
committed
optimize sha512 speed
1 parent 01cb779 commit 4317bff

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

src/hasher/sha512.mjs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,10 @@ class Sha512 extends Hasher32be {
197197
rotateRight64lo(this.W[i - 4], this.W[i - 3], 61) ^
198198
((this.W[i - 3] >>> 6) | (this.W[i - 4] << 26));
199199

200-
let c1 = (this.W[i - 13] & 0xFFFF) + (this.W[i - 31] & 0xFFFF) + (s0l & 0xFFFF) + (s1l & 0xFFFF);
201-
let c2 = (this.W[i - 13] >>> 16) + (this.W[i - 31] >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16);
202-
let c3 = (this.W[i - 14] & 0xFFFF) + (this.W[i - 32] & 0xFFFF) + (s0h & 0xFFFF) + (s1h & 0xFFFF) + (c2 >>> 16);
203-
let c4 = (this.W[i - 14] >>> 16) + (this.W[i - 32] >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16);
200+
let c1 = ((this.W[i - 13] & 0xFFFF) + (this.W[i - 31] & 0xFFFF) + (s0l & 0xFFFF) + (s1l & 0xFFFF)) | 0;
201+
let c2 = ((this.W[i - 13] >>> 16) + (this.W[i - 31] >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16)) | 0;
202+
let c3 = ((this.W[i - 14] & 0xFFFF) + (this.W[i - 32] & 0xFFFF) + (s0h & 0xFFFF) + (s1h & 0xFFFF) + (c2 >>> 16)) | 0;
203+
let c4 = ((this.W[i - 14] >>> 16) + (this.W[i - 32] >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16)) | 0;
204204

205205
this.W[i] = ((c4 << 16) | (c3 & 0xFFFF)) & 0xFFFFFFFF;
206206
this.W[i + 1] = ((c2 << 16) | (c1 & 0xFFFF)) & 0xFFFFFFFF;
@@ -216,17 +216,17 @@ class Sha512 extends Hasher32be {
216216
let majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);
217217
let majl = (al & bl) ^ (al & cl) ^ (bl & cl);
218218

219-
let t1l = hl + s1l;
220-
let t1h = hh + s1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);
221-
t1l = t1l + chl;
222-
t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);
223-
t1l = t1l + K[i + 1];
224-
t1h = t1h + K[i] + ((t1l >>> 0) < (K[i + 1] >>> 0) ? 1 : 0);
225-
t1l = t1l + this.W[i + 1];
226-
t1h = t1h + this.W[i] + ((t1l >>> 0) < (this.W[i + 1] >>> 0) ? 1 : 0);
219+
let t1l = (hl + s1l) | 0;
220+
let t1h = (hh + s1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0)) | 0;
221+
t1l = (t1l + chl) | 0;
222+
t1h = (t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0)) | 0;
223+
t1l = (t1l + K[i + 1]) | 0;
224+
t1h = (t1h + K[i] + ((t1l >>> 0) < (K[i + 1] >>> 0) ? 1 : 0)) | 0;
225+
t1l = (t1l + this.W[i + 1]) | 0;
226+
t1h = (t1h + this.W[i] + ((t1l >>> 0) < (this.W[i + 1] >>> 0) ? 1 : 0)) | 0;
227227

228-
let t2l = s0l + majl;
229-
let t2h = s0h + majh + ((t2l >>> 0) < (s0l >>> 0) ? 1 : 0);
228+
let t2l = (s0l + majl) | 0;
229+
let t2h = (s0h + majh + ((t2l >>> 0) < (s0l >>> 0) ? 1 : 0)) | 0;
230230

231231
hh = gh;
232232
hl = gl;

0 commit comments

Comments
 (0)