Мне нужно использовать массив байтов (непечатаемых символов) в качестве ключа для шифрования RC4. Открытый текст - это строка. Кажется, что CryptoJS.RC4.encrypt
ожидает только строки как для открытого текста, так и для ключа. Я прав? Если нет, как мне позвонить encrypt()
со строкой и массивом байтов?Может ли массив байтов использоваться в качестве ключа с помощью CryptoJS.RC4.encrypt?
ответ
Если вы хотите создать ключевое значение из списка значений байт, вам лучше всего использовать hex encoder function, CryptoJS.enc.Hex.parse
:
CryptoJS.enc.Hex.parse('48656c6c6f2c20576f726c6421');
Это будет разобрать вашу входную строку в виде списка пар двух символов, которые каждый из которых описывает значение байта. В этом случае шестнадцатеричные значения будут равны , 65
, 6c
, 6c
, 6f
и т. Д. Вы можете передать результат вызова parse
непосредственно в методы шифрования/дешифрования в качестве параметра key
. (Результатом является тип CryptoJS под названием «WordArray
», но вам не нужно беспокоиться о механике этого типа, просто передайте его в качестве ключевого параметра.)
Если вы хотите преобразовать массив чисел в шестнадцатеричной строки, вы можете легко сделать это с помощью простого цикла и .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);
};
'byteArr.map ((число) => (Num <16 '0': '') + num.toString (16)). присоединиться ('') ' – royhowie