【发布时间】:2017-04-26 05:20:36
【问题描述】:
从the JavaScript documentation 我们看到,由于使用双精度浮点格式数字,因此需要一个库来超越9007199254740991。 我们将找到一个方便的库列表来实现这一目标here。
在搜索同态加密时,我遇到了this question。
您可以在其中找到 this link 到 Pailler 的浏览器内实现。
检查代码后,我看到源代码包含 jsbn.js,这完全有意义(因为您将需要 BigInts 进行加密)。但是,它处理要加密的数字的方式对我来说有点奇怪。
$('#btn_encrypt').click(function(event) {
var valA = parseInt($('#inputA').val()),
valB = parseInt($('#inputB').val()),
startTime,
elapsed;
startTime = new Date().getTime();
encA = keys.pub.encrypt(nbv(valA));
elapsed = new Date().getTime() - startTime;
$('#encA').html(encA.toString());
$('#encAtime').html(elapsed);
通过使用 parseInt 和 nbv function nbv(i) { var r = nbi(); r.fromInt(i); return r; } 似乎很明显,他们依赖整数来创建随后将被加密的 BigInt。
这有任何意义吗?当具有直接从字符串创建 BigInts 的函数时更是如此 // (protected) set from string and radix
function bnpFromString(s,b) { ...}
该链接已在此处和加密的其他几个答案中被引用网站,正如我所说,我是 JS 的新手,所以我想检查这是否确实是实施 Pailler 的禁忌方式,或者我理解错误。
非常感谢您的帮助!
【问题讨论】:
-
顺便说一句,为了清楚起见,请随时编辑我的问题,我想了解如何正确提问。
-
由于格式问题、拼写错误和语法问题,您的问题几乎无法阅读。我建议花一些时间重新格式化您的问题。您可以使用撇号来内联源代码:
return bigint -
Tnx 输入,希望现在更好。
标签: javascript jquery encryption