feat: 更新ES-Crypto
This commit is contained in:
1 parent
759caf5fb2
commit
6e0a416422
7 files changed
+33
-33
No files matched your search
@@ -0,0 +1 @@
|
||||
var h=Object.defineProperty;var y=(i,n,s)=>n in i?h(i,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[n]=s;var c=(i,n,s)=>y(i,typeof n!="symbol"?n+"":n,s);(function(){"use strict";class i{constructor(t){c(this,"counter");c(this,"bias",0);this.counter=new Uint8Array(16),t instanceof Uint8Array?this.counter=new Uint8Array([...t]):new DataView(this.counter.buffer).setUint32(0,t??0,!0)}increase(t){t=Math.floor(t??1),this.bias+=t;let e=Math.floor(this.bias/16);this.bias=this.bias%16;for(let r=15;r>=8&&e!==0;r--){const a=this.counter[r]+e;this.counter[r]=a&255,e=a>>8}}get value(){return new Uint8Array([...this.counter])}}class n{constructor(t,e){c(this,"key");c(this,"counter");c(this,"_remainingCounterIndex",0);this.key=t,this.counter=new i(e)}async encrypt(t){const e=this._remainingCounterIndex,r=(16-(e+t.length)%16)%16,a=new Uint8Array([...new Uint8Array(e).fill(0),...t,...new Uint8Array(r).fill(0)]),u=this.counter.value,l=await crypto.subtle.encrypt({name:"AES-CTR",counter:u,length:128},this.key,a);return this._remainingCounterIndex=r,this.counter.increase(t.length),new Uint8Array(l).slice(e,e+t.length)}}let s;self.onmessage=async function(o){try{const{data:t,key:e}=o.data;if(!s){const a=await crypto.subtle.importKey("raw",e,{name:"AES-CTR"},!1,["encrypt"]);s=new n(a,7058)}const r=await s.encrypt(t);self.postMessage(r)}catch(t){throw t}}})();
|
||||
Reference in new issue
Block a user