나는이 문제를 해결했으며 좋은 방법이라고 생각하고 공유하고 싶습니다. Javascript 개체가 USC-2로 인코딩됩니다. 그러나 RC4 바이트로 작업하고 있습니다. 먼저, 문자열을 bytes 배열로 전송합니다.
var plainValueArray = TextEncoder ("utf-16"). encode (value); var keyArray = TextEncoder ("utf8"). 인코딩 (RC4Key); 둘째로, RC4 VAR의 RC4 = { 토굴 아래와 같이 : 함수 (rawBytes, keyBytes) {
var i;
var sBuffer=new ArrayBuffer(256);
var kBuffer=new ArrayBuffer(256);
var cipherBuffer=new ArrayBuffer(rawBytes.length);
var s=new Uint8Array(sBuffer);//box[]
var k=new Uint8Array(kBuffer);//key[]
var cipherBytes=new Uint8Array(cipherBuffer);
for(i=0;i<rawBytes.length;i++)
{
cipherBytes[i]=0x00;
}
for(i=0;i<256;i++)
{
k[i]=keyBytes[i%keyBytes.length];
s[i]=i;
}
var j=0;
for(i=0;i<256;i++)
{
j=(j+s[i]+k[i])%256;
x=s[i];
s[i]=s[j];
s[j]=x;
}
i=0;
j=0;
for(var y=0;y<rawBytes.length;y++)
{
i=(i+1)%256;
j=(j+s[i])%256;
x=s[i];
s[i]=s[j];
s[j]=x;
key=s[(s[i]+s[j])%256]
cipherBytes[y]=key^rawBytes[y];
}
return cipherBytes;
}
};
유니 코드는 인코딩이 아닙니다. 아마도 UTF-16의 변형을 의미 할 것입니다 ... – dda