字节数组可以用作 CryptoJS.RC4.encrypt 的密钥吗?
Can array of bytes be used as a key with CryptoJS.RC4.encrypt?
我需要使用字节数组(不可打印字符)作为 RC4 加密的密钥。明文是一个字符串。 CryptoJS.RC4.encrypt
似乎只需要明文和密钥的字符串。我对么?如果不是,我如何用字符串和字节数组调用 encrypt()
?
如果要从字节值列表创建键值,最好的办法是使用 hex encoder function, CryptoJS.enc.Hex.parse
:
CryptoJS.enc.Hex.parse('48656c6c6f2c20576f726c6421');
这会将您的输入字符串解析为两个字符对的列表,每个字符对描述一个字节值。在这种情况下,十六进制值将是 48
、65
、6c
、6c
、6f
等。您可以传递 parse
作为 key
参数直接调用 encrypt/decrypt 方法。 (结果是一个名为“WordArray
”的 CryptoJS 类型,但您无需担心这种类型的机制;只需将其作为关键参数传入即可。)
如果要将数字数组转换为十六进制字符串,可以使用简单的循环轻松完成 .toString(16)
:
var byteArr = [72, 101, 108, 108, 111, 44],
str = "",
byteVal;
for(var i=0; i<byteArr.length; i++) {
byteVal = byteArr[i];
if(byteVal < 16) { str += "0"; }
str += byteVal.toString(16);
};
我需要使用字节数组(不可打印字符)作为 RC4 加密的密钥。明文是一个字符串。 CryptoJS.RC4.encrypt
似乎只需要明文和密钥的字符串。我对么?如果不是,我如何用字符串和字节数组调用 encrypt()
?
如果要从字节值列表创建键值,最好的办法是使用 hex encoder function, CryptoJS.enc.Hex.parse
:
CryptoJS.enc.Hex.parse('48656c6c6f2c20576f726c6421');
这会将您的输入字符串解析为两个字符对的列表,每个字符对描述一个字节值。在这种情况下,十六进制值将是 48
、65
、6c
、6c
、6f
等。您可以传递 parse
作为 key
参数直接调用 encrypt/decrypt 方法。 (结果是一个名为“WordArray
”的 CryptoJS 类型,但您无需担心这种类型的机制;只需将其作为关键参数传入即可。)
如果要将数字数组转换为十六进制字符串,可以使用简单的循环轻松完成 .toString(16)
:
var byteArr = [72, 101, 108, 108, 111, 44],
str = "",
byteVal;
for(var i=0; i<byteArr.length; i++) {
byteVal = byteArr[i];
if(byteVal < 16) { str += "0"; }
str += byteVal.toString(16);
};