Files
@ ff3879ba7270
Branch filter:
Location: CryptoJS/src/util.js - annotation
ff3879ba7270
1.7 KiB
text/javascript
testing and debugging chacha
f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 f425e00a94c6 | export const MASK=0xffffffff;
export function bytes2int32(arr){
return arr.reduce((acc,b,i)=>acc|b<<(i*8));
}
export function bytes2int32s(arr){
let res=[];
for(let i=0;i<arr.length;i+=4){
res.push(bytes2int32(arr.slice(i,i+4)));
}
return res;
}
export function int322bytes(x){
let res=[];
for(let i=0;i<4;i++){
res.push(x&0xff);
x>>>=8;
}
return res;
}
export function int32s2bytes(arr){
return arr.map(int322bytes).reduce((acc,bytes)=>acc.concat(bytes));
}
export function bytes2hex(arr){
return arr.map(x=>x.toString(16).padStart(2,"0")).join("");
}
export function str2utf8(s){
let res=[];
let c=s.codePointAt(0);
for(let i=0; c!==undefined; i++,c=s.codePointAt(i)){
if(c<0x80){res.push(c);}
else if(c<0x800){
res.push(0b11000000|(c>>>6));
res.push(0b10000000|(c&0b111111));
}
else if(c<0x10000){
res.push(0b11100000|(c>>>12));
res.push(0b10000000|((c>>>6)&0b111111));
res.push(0b10000000|(c&0b111111));
}
else{
res.push(0b11110000|(c>>>18));
res.push(0b10000000|((c>>>12)&0b111111));
res.push(0b10000000|((c>>>6)&0b111111));
res.push(0b10000000|(c&0b111111));
}
if(c>0xffff){i++;} // skip surrogate
}
return res;
}
export function utf82str(arr){
let res=[];
for(let i=0;i<arr.length;i++){
let x=arr[i];
if(x<=0b1111111){res.push(x);}
else if(x<=0b11011111){
let a=x&0b11111;
let b=arr[++i]&0b111111;
res.push(a<<6|b);
}
else if(x<=0b11101111){
let a=x&0b1111;
let b=arr[++i]&0b111111;
let c=arr[++i]&0b111111;
res.push(a<<12|b<<6|c);
}
else{
let a=x&0b111;
let b=arr[++i]&0b111111;
let c=arr[++i]&0b111111;
let d=arr[++i]&0b111111;
res.push(a<<18|b<<12|c<<6|d);
}
}
return res.map(x=>String.fromCodePoint(x)).join("");
}
|