【问题标题】:Javascript Int vs BigInt librariesJavascript Int 与 BigInt 库
【发布时间】: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);

通过使用 parseIntnbv 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


【解决方案1】:

看来,您链接到的 Pailler 实现旨在作为概念验证演示,而不是完整的实现。据推测,作者打算将其仅用于玩具示例,例如 (36+14)*7 或 (97+5)*11,而不是涉及数百位数字的“真实”示例。

【讨论】:

  • 是的,我完全同意 @Robert 的看法,乍一看,我认为直接在输入字符串上使用函数 bnpFromString(s,b) 会很容易。但是还有一些作用域问题。即它在该函数中使用this.fromRadix(s,b),这会提示错误,因为前者在jsbn.js中,后者在jsbn2.js中。尽管在文件末尾有BigInteger.prototype.fromInt = bnpFromInt,但在 jsbn.js 中插入 .fromRadix 的工作都不会自那时起提示错误。
猜你喜欢
  • 2012-03-11
  • 1970-01-01
  • 2016-10-29
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
相关资源
最近更新 更多