【发布时间】:2017-11-26 09:37:08
【问题描述】:
我一直在尝试将哈希转换为浮点数,到目前为止我只实现了从中生成一个数字。
如何将 SHA256 哈希转换为 0.0 到 1.0 之间的浮点数?
我是如何得到一个号码的,
var hash = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
var number = hash.substr(0, 8);
number = parseInt(number, 16);
number = Math.abs(number) % 11;
console.log('Number (0 - 10): ' + number);
【问题讨论】:
-
不知道这是否可行?根据定义,浮点数具有与它的存储方式相关的某种程度的不精确性(必须弥补)。即使您可以转换哈希,它也完全有可能不再是准确的表示。你想完成什么?
-
@roelofs "imprecision" :-) --- 致 OP:您可以查看加密 StackExchange 论坛,例如 crypto.stackexchange.com/questions/17990/…
-
@Mörre - 就是这样 - 谢谢!很好的链接,虽然我不确定他在追求什么。理论上,有了足够大的尾数和指数,他可以将哈希除以一个非常大的数字......
-
@Mörre 检查我编辑的代码,这就是我设法得到一个数字的方法,如果我能得到一个整数,我当然应该能够得到一个浮点数,或者..?
-
您可以创建从 SHA256 的 256 位到 Javascript
Number的位的哈希,并使用TypedArray分配这些位。你肯定会丢失信息,因为 nr。Number中的位数要少得多!您也可以简单地使用每 4 位。实际上更多一点,因为这里只能使用 JavascriptNumber中的一些 64 位。 -- 看看这个 JS 数字格式的解释:2ality.com/2012/04/number-encoding.html 或者只使用前 52 位,你扔掉 哪些 位无关紧要。
标签: javascript sha256 cryptojs