gpt4 book ai didi

javascript - 将负 BigInteger(Tom Wu 的 JSBN 库)值转换为十六进制值

转载 作者:行者123 更新时间:2023-11-28 07:03:04 26 4
gpt4 key购买 nike

我正在尝试将 BigInteger 数字转换为其十六进制格式,以便我可以将其用于进一步的 HMAC 计算。我已使用以下帖子来获取执行此操作的代码。

Converting a 64 bit number string to word array using CryptoJS

该代码对于正 BigInteger 数工作得非常好,但在用于负 BigInteger 数时不会产生正确的结果。

例如:考虑链接帖子中的以下代码段:

function intToWords(num, lengthInBytes) {
var bigInt = new BigInteger();
bigInt.fromString(num, 10); // radix is 10
var hexNum = bigInt.toString(16); // radix is 16

if (lengthInBytes && lengthInBytes * 2 >= hexNum.length) {
hexNum = Array(lengthInBytes * 2 - hexNum.length + 1).join("0") + hexNum;
}

return CryptoJS.enc.Hex.parse(hexNum);
}

我将 num 值传递为 -52,将 lengthInBytes 值传递为 8。生成的 hexNum(intToWords 函数的第三行)是 "-34"(而不是 "ffffffffffffffcc")

有人可以帮助我将输入数字正确转换为正确的十六进制格式吗?

最佳答案

我想出了这个。库正在返回正确的十六进制值。我只需要得到 2 对十六进制数的补码(第 3 行)。

关于javascript - 将负 BigInteger(Tom Wu 的 JSBN 库)值转换为十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31927479/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com