1

Мне нужно использовать массив байтов (непечатаемых символов) в качестве ключа для шифрования RC4. Открытый текст - это строка. Кажется, что CryptoJS.RC4.encrypt ожидает только строки как для открытого текста, так и для ключа. Я прав? Если нет, как мне позвонить encrypt() со строкой и массивом байтов?Может ли массив байтов использоваться в качестве ключа с помощью CryptoJS.RC4.encrypt?

ответ

3

Если вы хотите создать ключевое значение из списка значений байт, вам лучше всего использовать 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); 
}; 
+2

'byteArr.map ((число) => (Num <16 '0': '') + num.toString (16)). присоединиться ('') ' – royhowie