如何在javascript中生成加密安全的随机数?
发布于 2010-11-03 08:23:12
例如,您可以使用鼠标移动作为随机数的种子,每当onmousemove事件发生时读取时间和鼠标位置,将该数据提供给美白函数,您将获得手头的一些第一类随机数。不过,在使用数据之前,请确保用户已经充分移动了鼠标。
编辑:我自己也做了一个密码生成器,我不能保证我的美白功能是完美的,但不断地重新播种,我非常确定它足以胜任这项工作:Edit.Hopto.org/generator.htm
Edit2:它现在可以在智能手机上使用,但只能在熵收集时禁用触摸功能。Android在其他任何方式下都不能正常工作。
发布于 2011-05-31 07:36:57
在WHATWG上有关于将其添加到window.crypto对象的讨论。您可以阅读the discussion并查看proposed API和webkit bug (22049)。
刚刚测试了以下代码in Chrome,以获得一个随机字节:
(function(){
var buf = new Uint8Array(1);
window.crypto.getRandomValues(buf);
alert(buf[0]);
})();
发布于 2015-12-07 01:31:29
使用window.crypto.getRandomValues
,如下所示:
var random_num = new Uint8Array(2048 / 8); // 2048 = number length in bits
window.crypto.getRandomValues(random_num);
这是supported in all modern browsers,并使用操作系统的随机生成器(例如/dev/urandom
)。如果您需要IE11兼容性,则必须通过var crypto = window.crypto || window.msCrypto; crypto.getRandomValues(..)
使用它们的前缀实现。
请注意,window.crypto
应用编程接口也可以generate keys outright,这可能是更好的选择。
https://stackoverflow.com/questions/4083204
复制相似问题