Я хочу знать, можно ли правильно преобразовать строку с целочисленными данными в массив слов CryptoJS? Пример. Могу ли я преобразовать «175950736337895418» в массив слов так же, как я могу создать массив слов из 175950736337895418 (значение int).
У меня есть код, который преобразует целые значения в массив слов
// Converts integer to byte array
function getInt64Bytes( x ){
var bytes = [];
for(var i = 7;i>=0;i--){
bytes[i] = x & 0xff;
x = x>>8;
}
return bytes;
}
//converts the byte array to hex string
function bytesToHexStr(bytes) {
for (var hex = [], i = 0; i < bytes.length; i++) {
hex.push((bytes[i] >>> 4).toString(16));
hex.push((bytes[i] & 0xF).toString(16));
}
return hex.join("");
}
// Main function to convert integer values to word array
function intToWords(counter){
var bytes = getInt64Bytes(counter);
var hexstr = bytesToHexStr(bytes);
var words = CryptoJS.enc.Hex.parse(hexstr);
return words;
}
Даже этот код не работает правильно, так как очень большие целые числа (превышающие ограничение javascript на числа 2 ^ 53 - 1) округляются. Следовательно, мне нужно решение, которое могло бы принимать целочисленное значение в виде строки и правильно преобразовывать его в массив слов.
PS. Мне нужен этот массив слов для вычисления значения HMAC, используя следующий код
CryptoJS.HmacSHA512(intToWords(counter), CryptoJS.enc.Hex.parse(key))