如何在Node.js中将大型十六进制值转换为整数?

3

这里有一个大的十六进制值:

var Hex = "ad6eb61316ff805e9c94667ab04aa45aa3203eef71ba8c12afb353a5c7f11657e43f5ce4483d4e6eca46af6b3bde4981499014730d3b233420bf3ecd3287a2768da8bd401f0abd7a5a137d700f0c9d0574ef7ba91328e9a6b055820d03c98d56943139075d";

如何在node.js中将数字转换成大整数?我尝试过搜索,但我找到的是

var integer = parseInt(Hex, 16);

但是如果我输入一个大的十六进制值,它就不能工作。我认为。 结果是,
1.1564501846672726e+243

我该如何返回普通的大整数?我想将此值用作RSA加密中的模数。实际上,我不知道是否需要进行转换。


我想知道这是否是使用 BigInt 的新可接受答案:https://dev59.com/yWcs5IYBdhLWcg3w1ndq#53751162 - Ryan
1个回答

3

在RSA中进行模运算需要精确的整数,但是在JavaScript中最大的整数为9007199254740991,超过此数会失去精度。你不能将一个更大的整数表示为数字。你需要设计一种使用大整数的模算法或者直接使用可用的库,例如JSBN中提供的大数算法,它还提供了包括PKCS#1 v1.5填充在内的RSA的完整实现。


谢谢。我看了你的回答并找到了一些相关文档,但是普通的JSBN不能在没有浏览器的情况下使用。幸运的是,我找到了这个github链接:https://github.com/eschnou/node-bignumber但是我遇到了一个错误。你知道出了什么问题吗?请访问这个页面:http://stackoverflow.com/questions/34180984/rsakey-is-not-defined-in-nodejs。 - ton1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接