easy-sha256
Version:
A Simple and Easy way to use SHA256 in the browser or in NodeJS
2 lines (1 loc) • 2.73 kB
JavaScript
var Sha256=function(){function d(a,c){return c&&c.async?new Promise(function(c,d){c(b(a));}):b(a);}function b(D){if(D==undefined)throw'SHA256: The message parameter cannot be undefined.';const E=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var o=l(D);var A=o.length;o.push(1),k=0;for(var y=0;;y++)if((A+1+y)%512==448){k=y;break;}for(var a=0;a<k;a++)o.push(0);var B=A.toString(2).split('');var t=[];for(var a=0;a<B.length;a++)t.push(+B[a]);for(var a=0;a<64-t.length;a++)o.push(0);for(var a=0;a<t.length;a++)o.push(t[a]);const C=o.length/512;var m=c(o,C);var F=m[0].length/32;for(var a=0;a<m.length;a++){m[a]=c(m[a],F);for(var q=0;q<m[a].length;q++)m[a][q]=m[a][q].join(''),m[a][q]=parseInt(m[a][q],2);}var b=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];for(var a=0;a<C;a++){var p=new Array(64);for(var d=0;d<16;d++)p[d]=m[a][d];for(var d=16;d<64;d++)p[d]=h(p[d-2])+p[d-7]+g(p[d-15])+p[d-16]>>>0;var r=b[0];var u=b[1];var v=b[2];var z=b[3];var s=b[4];var w=b[5];var x=b[6];var n=b[7];for(var d=0;d<64;d++)T1=n+f(s)+i(s,w,x)+E[d]+p[d],T2=e(r)+j(r,u,v),n=x,x=w,w=s,s=z+T1>>>0,z=v,v=u,u=r,r=T1+T2>>>0;b[0]=b[0]+r>>>0,b[1]=b[1]+u>>>0,b[2]=b[2]+v>>>0,b[3]=b[3]+z>>>0,b[4]=b[4]+s>>>0,b[5]=b[5]+w>>>0,b[6]=b[6]+x>>>0,b[7]=b[7]+n>>>0;}for(let n=0;n<b.length;n++)b[n]=('00000000'+b[n].toString(16)).slice(-8);return b.join('');}function a(a,b){return b>>>a|b<<32-a;}function e(b){return a(2,b)^a(13,b)^a(22,b);}function f(b){return a(6,b)^a(11,b)^a(25,b);}function g(b){return a(7,b)^a(18,b)^b>>>3;}function h(b){return a(17,b)^a(19,b)^b>>>10;}function i(a,b,c){return a&b^~a&c;}function j(a,b,c){return a&b^a&c^b&c;}function l(f){var b='';for(var a=0;a<f.length;a++){var c=f[a].charCodeAt().toString(2);b+=Array(8-c.length+1).join('0')+c;}var d=b.split('');var e=[];for(var a=0;a<d.length;a++)e.push(+d[a]);return e;}function c(b,e){var c=Math.floor(b.length/e);var d=[];for(var a=0;a<b.length;a+=c)d.push(b.slice(a,a+c));return d;}return{hash:d};}();typeof module!=='undefined'&&module.exports!==void 0?module.exports=Sha256:window.Validator=Sha256;