mirror of
https://github.com/emn178/js-sha3.git
synced 2026-08-13 03:51:54 +08:00
10 lines
10 KiB
JavaScript
10 lines
10 KiB
JavaScript
var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var r,n={exports:{}};
|
|
/**
|
|
* [js-sha3]{@link https://github.com/emn178/js-sha3}
|
|
*
|
|
* @version 0.10.0
|
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
|
* @copyright Chen, Yi-Cyuan 2015-2023
|
|
* @license MIT
|
|
*/r=n,function(){var e="input is invalid type",n="object"==typeof window,o=n?window:{};o.JS_SHA3_NO_WINDOW&&(n=!1);var i=!n&&"object"==typeof self;!o.JS_SHA3_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?o=t:i&&(o=self);for(var a=!o.JS_SHA3_NO_COMMON_JS&&r.exports,s=!o.JS_SHA3_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,u="0123456789abcdef".split(""),f=[4,1024,262144,67108864],c=[0,8,16,24],h=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],p=[224,256,384,512],d=[128,256],l=["hex","buffer","arrayBuffer","array","digest"],y={128:168,256:136},k=o.JS_SHA3_NO_NODE_JS||!Array.isArray?function(t){return"[object Array]"===Object.prototype.toString.call(t)}:Array.isArray,b=!s||!o.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView?ArrayBuffer.isView:function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer},_=function(t){var r=typeof t;if("string"===r)return[t,!0];if("object"!==r||null===t)throw new Error(e);if(s&&t.constructor===ArrayBuffer)return[new Uint8Array(t),!1];if(!k(t)&&!b(t))throw new Error(e);return[t,!1]},v=function(t){return 0===_(t)[0].length},g=function(t){for(var e=[],r=0;r<t.length;++r)e[r]=t[r];return e},A=function(t,e,r){return function(n){return new I(t,e,t).update(n)[r]()}},w=function(t,e,r){return function(n,o){return new I(t,e,o).update(n)[r]()}},B=function(t,e,r){return function(e,n,o,i){return O["cshake"+t].update(e,n,o,i)[r]()}},S=function(t,e,r){return function(e,n,o,i){return O["kmac"+t].update(e,n,o,i)[r]()}},x=function(t,e,r,n){for(var o=0;o<l.length;++o){var i=l[o];t[i]=e(r,n,i)}return t},C=function(t,e){var r=A(t,e,"hex");return r.create=function(){return new I(t,e,t)},r.update=function(t){return r.create().update(t)},x(r,A,t,e)},m=[{name:"keccak",padding:[1,256,65536,16777216],bits:p,createMethod:C},{name:"sha3",padding:[6,1536,393216,100663296],bits:p,createMethod:C},{name:"shake",padding:[31,7936,2031616,520093696],bits:d,createMethod:function(t,e){var r=w(t,e,"hex");return r.create=function(r){return new I(t,e,r)},r.update=function(t,e){return r.create(e).update(t)},x(r,w,t,e)}},{name:"cshake",padding:f,bits:d,createMethod:function(t,e){var r=y[t],n=B(t,0,"hex");return n.create=function(n,o,i){return v(o)&&v(i)?O["shake"+t].create(n):new I(t,e,n).bytepad([o,i],r)},n.update=function(t,e,r,o){return n.create(e,r,o).update(t)},x(n,B,t,e)}},{name:"kmac",padding:f,bits:d,createMethod:function(t,e){var r=y[t],n=S(t,0,"hex");return n.create=function(n,o,i){return new R(t,e,o).bytepad(["KMAC",i],r).bytepad([n],r)},n.update=function(t,e,r,o){return n.create(t,r,o).update(e)},x(n,S,t,e)}}],O={},z=[],M=0;M<m.length;++M)for(var N=m[M],J=N.bits,j=0;j<J.length;++j){var E=N.name+"_"+J[j];if(z.push(E),O[E]=N.createMethod(J[j],N.padding),"sha3"!==N.name){var H=N.name+J[j];z.push(H),O[H]=O[E]}}function I(t,e,r){this.blocks=[],this.s=[],this.padding=e,this.outputBits=r,this.reset=!0,this.finalized=!1,this.block=0,this.start=0,this.blockCount=1600-(t<<1)>>5,this.byteCount=this.blockCount<<2,this.outputBlocks=r>>5,this.extraBytes=(31&r)>>3;for(var n=0;n<50;++n)this.s[n]=0}function R(t,e,r){I.call(this,t,e,r)}I.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var e=_(t);t=e[0];for(var r,n,o=e[1],i=this.blocks,a=this.byteCount,s=t.length,u=this.blockCount,f=0,h=this.s;f<s;){if(this.reset)for(this.reset=!1,i[0]=this.block,r=1;r<u+1;++r)i[r]=0;if(o)for(r=this.start;f<s&&r<a;++f)(n=t.charCodeAt(f))<128?i[r>>2]|=n<<c[3&r++]:n<2048?(i[r>>2]|=(192|n>>6)<<c[3&r++],i[r>>2]|=(128|63&n)<<c[3&r++]):n<55296||n>=57344?(i[r>>2]|=(224|n>>12)<<c[3&r++],i[r>>2]|=(128|n>>6&63)<<c[3&r++],i[r>>2]|=(128|63&n)<<c[3&r++]):(n=65536+((1023&n)<<10|1023&t.charCodeAt(++f)),i[r>>2]|=(240|n>>18)<<c[3&r++],i[r>>2]|=(128|n>>12&63)<<c[3&r++],i[r>>2]|=(128|n>>6&63)<<c[3&r++],i[r>>2]|=(128|63&n)<<c[3&r++]);else for(r=this.start;f<s&&r<a;++f)i[r>>2]|=t[f]<<c[3&r++];if(this.lastByteIndex=r,r>=a){for(this.start=r-a,this.block=i[u],r=0;r<u;++r)h[r]^=i[r];F(h),this.reset=!0}else this.start=r}return this},I.prototype.encode=function(t,e){var r=255&t,n=1,o=[r];for(r=255&(t>>=8);r>0;)o.unshift(r),r=255&(t>>=8),++n;return e?o.push(n):o.unshift(n),this.update(o),o.length},I.prototype.encodeString=function(t){var e=_(t);t=e[0];var r=e[1],n=0,o=t.length;if(r)for(var i=0;i<t.length;++i){var a=t.charCodeAt(i);a<128?n+=1:a<2048?n+=2:a<55296||a>=57344?n+=3:(a=65536+((1023&a)<<10|1023&t.charCodeAt(++i)),n+=4)}else n=o;return n+=this.encode(8*n),this.update(t),n},I.prototype.bytepad=function(t,e){for(var r=this.encode(e),n=0;n<t.length;++n)r+=this.encodeString(t[n]);var o=(e-r%e)%e,i=[];return i.length=o,this.update(i),this},I.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex,r=this.blockCount,n=this.s;if(t[e>>2]|=this.padding[3&e],this.lastByteIndex===this.byteCount)for(t[0]=t[r],e=1;e<r+1;++e)t[e]=0;for(t[r-1]|=2147483648,e=0;e<r;++e)n[e]^=t[e];F(n)}},I.prototype.toString=I.prototype.hex=function(){this.finalize();for(var t,e=this.blockCount,r=this.s,n=this.outputBlocks,o=this.extraBytes,i=0,a=0,s="";a<n;){for(i=0;i<e&&a<n;++i,++a)t=r[i],s+=u[t>>4&15]+u[15&t]+u[t>>12&15]+u[t>>8&15]+u[t>>20&15]+u[t>>16&15]+u[t>>28&15]+u[t>>24&15];a%e===0&&(r=g(r),F(r),i=0)}return o&&(t=r[i],s+=u[t>>4&15]+u[15&t],o>1&&(s+=u[t>>12&15]+u[t>>8&15]),o>2&&(s+=u[t>>20&15]+u[t>>16&15])),s},I.prototype.arrayBuffer=function(){this.finalize();var t,e=this.blockCount,r=this.s,n=this.outputBlocks,o=this.extraBytes,i=0,a=0,s=this.outputBits>>3;t=o?new ArrayBuffer(n+1<<2):new ArrayBuffer(s);for(var u=new Uint32Array(t);a<n;){for(i=0;i<e&&a<n;++i,++a)u[a]=r[i];a%e===0&&(r=g(r),F(r))}return o&&(u[a]=r[i],t=t.slice(0,s)),t},I.prototype.buffer=I.prototype.arrayBuffer,I.prototype.digest=I.prototype.array=function(){this.finalize();for(var t,e,r=this.blockCount,n=this.s,o=this.outputBlocks,i=this.extraBytes,a=0,s=0,u=[];s<o;){for(a=0;a<r&&s<o;++a,++s)t=s<<2,e=n[a],u[t]=255&e,u[t+1]=e>>8&255,u[t+2]=e>>16&255,u[t+3]=e>>24&255;s%r===0&&(n=g(n),F(n))}return i&&(t=s<<2,e=n[a],u[t]=255&e,i>1&&(u[t+1]=e>>8&255),i>2&&(u[t+2]=e>>16&255)),u},R.prototype=new I,R.prototype.finalize=function(){return this.encode(this.outputBits,!0),I.prototype.finalize.call(this)};var F=function(t){var e,r,n,o,i,a,s,u,f,c,p,d,l,y,k,b,_,v,g,A,w,B,S,x,C,m,O,z,M,N,J,j,E,H,I,R,F,U,D,V,W,T,Y,K,P,q,G,L,Q,X,Z,$,tt,et,rt,nt,ot,it,at,st,ut,ft,ct;for(n=0;n<48;n+=2)o=t[0]^t[10]^t[20]^t[30]^t[40],i=t[1]^t[11]^t[21]^t[31]^t[41],a=t[2]^t[12]^t[22]^t[32]^t[42],s=t[3]^t[13]^t[23]^t[33]^t[43],u=t[4]^t[14]^t[24]^t[34]^t[44],f=t[5]^t[15]^t[25]^t[35]^t[45],c=t[6]^t[16]^t[26]^t[36]^t[46],p=t[7]^t[17]^t[27]^t[37]^t[47],e=(d=t[8]^t[18]^t[28]^t[38]^t[48])^(a<<1|s>>>31),r=(l=t[9]^t[19]^t[29]^t[39]^t[49])^(s<<1|a>>>31),t[0]^=e,t[1]^=r,t[10]^=e,t[11]^=r,t[20]^=e,t[21]^=r,t[30]^=e,t[31]^=r,t[40]^=e,t[41]^=r,e=o^(u<<1|f>>>31),r=i^(f<<1|u>>>31),t[2]^=e,t[3]^=r,t[12]^=e,t[13]^=r,t[22]^=e,t[23]^=r,t[32]^=e,t[33]^=r,t[42]^=e,t[43]^=r,e=a^(c<<1|p>>>31),r=s^(p<<1|c>>>31),t[4]^=e,t[5]^=r,t[14]^=e,t[15]^=r,t[24]^=e,t[25]^=r,t[34]^=e,t[35]^=r,t[44]^=e,t[45]^=r,e=u^(d<<1|l>>>31),r=f^(l<<1|d>>>31),t[6]^=e,t[7]^=r,t[16]^=e,t[17]^=r,t[26]^=e,t[27]^=r,t[36]^=e,t[37]^=r,t[46]^=e,t[47]^=r,e=c^(o<<1|i>>>31),r=p^(i<<1|o>>>31),t[8]^=e,t[9]^=r,t[18]^=e,t[19]^=r,t[28]^=e,t[29]^=r,t[38]^=e,t[39]^=r,t[48]^=e,t[49]^=r,y=t[0],k=t[1],q=t[11]<<4|t[10]>>>28,G=t[10]<<4|t[11]>>>28,z=t[20]<<3|t[21]>>>29,M=t[21]<<3|t[20]>>>29,st=t[31]<<9|t[30]>>>23,ut=t[30]<<9|t[31]>>>23,T=t[40]<<18|t[41]>>>14,Y=t[41]<<18|t[40]>>>14,H=t[2]<<1|t[3]>>>31,I=t[3]<<1|t[2]>>>31,b=t[13]<<12|t[12]>>>20,_=t[12]<<12|t[13]>>>20,L=t[22]<<10|t[23]>>>22,Q=t[23]<<10|t[22]>>>22,N=t[33]<<13|t[32]>>>19,J=t[32]<<13|t[33]>>>19,ft=t[42]<<2|t[43]>>>30,ct=t[43]<<2|t[42]>>>30,et=t[5]<<30|t[4]>>>2,rt=t[4]<<30|t[5]>>>2,R=t[14]<<6|t[15]>>>26,F=t[15]<<6|t[14]>>>26,v=t[25]<<11|t[24]>>>21,g=t[24]<<11|t[25]>>>21,X=t[34]<<15|t[35]>>>17,Z=t[35]<<15|t[34]>>>17,j=t[45]<<29|t[44]>>>3,E=t[44]<<29|t[45]>>>3,x=t[6]<<28|t[7]>>>4,C=t[7]<<28|t[6]>>>4,nt=t[17]<<23|t[16]>>>9,ot=t[16]<<23|t[17]>>>9,U=t[26]<<25|t[27]>>>7,D=t[27]<<25|t[26]>>>7,A=t[36]<<21|t[37]>>>11,w=t[37]<<21|t[36]>>>11,$=t[47]<<24|t[46]>>>8,tt=t[46]<<24|t[47]>>>8,K=t[8]<<27|t[9]>>>5,P=t[9]<<27|t[8]>>>5,m=t[18]<<20|t[19]>>>12,O=t[19]<<20|t[18]>>>12,it=t[29]<<7|t[28]>>>25,at=t[28]<<7|t[29]>>>25,V=t[38]<<8|t[39]>>>24,W=t[39]<<8|t[38]>>>24,B=t[48]<<14|t[49]>>>18,S=t[49]<<14|t[48]>>>18,t[0]=y^~b&v,t[1]=k^~_&g,t[10]=x^~m&z,t[11]=C^~O&M,t[20]=H^~R&U,t[21]=I^~F&D,t[30]=K^~q&L,t[31]=P^~G&Q,t[40]=et^~nt&it,t[41]=rt^~ot&at,t[2]=b^~v&A,t[3]=_^~g&w,t[12]=m^~z&N,t[13]=O^~M&J,t[22]=R^~U&V,t[23]=F^~D&W,t[32]=q^~L&X,t[33]=G^~Q&Z,t[42]=nt^~it&st,t[43]=ot^~at&ut,t[4]=v^~A&B,t[5]=g^~w&S,t[14]=z^~N&j,t[15]=M^~J&E,t[24]=U^~V&T,t[25]=D^~W&Y,t[34]=L^~X&$,t[35]=Q^~Z&tt,t[44]=it^~st&ft,t[45]=at^~ut&ct,t[6]=A^~B&y,t[7]=w^~S&k,t[16]=N^~j&x,t[17]=J^~E&C,t[26]=V^~T&H,t[27]=W^~Y&I,t[36]=X^~$&K,t[37]=Z^~tt&P,t[46]=st^~ft&et,t[47]=ut^~ct&rt,t[8]=B^~y&b,t[9]=S^~k&_,t[18]=j^~x&m,t[19]=E^~C&O,t[28]=T^~H&R,t[29]=Y^~I&F,t[38]=$^~K&q,t[39]=tt^~P&G,t[48]=ft^~et&nt,t[49]=ct^~rt&ot,t[0]^=h[n],t[1]^=h[n+1]};if(a)r.exports=O;else for(M=0;M<z.length;++M)o[z[M]]=O[z[M]]}();var o=e(n.exports);const{sha3_224:i,sha3_256:a,sha3_384:s,sha3_512:u,keccak_224:f,keccak_256:c,keccak_384:h,keccak_512:p,keccak224:d,keccak256:l,keccak384:y,keccak512:k,shake_128:b,shake_256:_,shake128:v,shake256:g,cshake_128:A,cshake_256:w,cshake128:B,cshake256:S,kmac_128:x,kmac_256:C,kmac128:m,kmac256:O}=o;export{B as cshake128,S as cshake256,A as cshake_128,w as cshake_256,o as default,d as keccak224,l as keccak256,y as keccak384,k as keccak512,f as keccak_224,c as keccak_256,h as keccak_384,p as keccak_512,m as kmac128,O as kmac256,x as kmac_128,C as kmac_256,i as sha3_224,a as sha3_256,s as sha3_384,u as sha3_512,v as shake128,g as shake256,b as shake_128,_ as shake_256};
|