javascript - JavaScript:安全随机数生成
问题描述
我需要使用 JS 生成安全的随机数。
此随机数生成必须尽可能安全(尽可能随机)。
所以我显然不能在这里使用 Math.random() 。
AFAIK 我最好的选择是使用 Crypto API 的crypto.getRandomValues()方法。
我读到 Crypto API 是“尽可能安全”(除了“真正的”RNG 之外),并使用从特定于平台的 RNG /dev/urandom
(如 unix 中)获取的值作为种子。
1. crypto.getRandomValues() 真的安全吗?有什么我应该担心的缺陷吗?
2. 安全或不安全,我应该进一步考虑 Crypto.getRandomValues() 的随机性吗?喜欢,
我可以再次使用 crypto.getRandomValues() 从 crypto.getRandomValues() 的第一个结果中获取随机值。
或者
我可以实现我自己的 RNG,它使用用户鼠标移动/时间/窗口宽度/高度作为种子。
然后使用来自该 RNG 的随机数从 crypto.getRandomValues() 的结果中随机选择一个数字。
任何见解将不胜感激。
解决方案
据我了解这个问题,我相信您应该使用 crypto.getRandomValues 作为另一个选项(用户鼠标移动/时间/窗口宽度/高度)是可追踪的,任何有经验的优秀黑客都会对您的系统构成风险。
但是你在寻找什么样的“数字”?
推荐阅读
- javascript - 通过三元运算符映射数组赋值失败?
- java - 如何获取其中一个字段包含某个单词的行?
- macos - 启动 vim 时出现错误消息:“无法将语言环境类别 LC_NUMERIC 设置为 en_CH”(或 en_BR、en_RU 和 LC_TIME、LC_COLLATE、LC_MONETARY、LC_MESSAGES)
- delphi - Delphi Tokyo Service 仅在启动时创建进程
- r - 如何在 Github 的 Atom 中更新 R 的路径变量?
- java - 如何修复 Firebase 身份验证中的空指针异常?
- python-2.7 - 变量引用和可变性
- google-chrome-extension - 如何使用 chrome.tabs.executeScript() 更改网页
- python - 如何使 QPushButtons 将文本添加到 pyqt5 中的 QLineEdit 框中?
- angular - 无法将 Firebase Auth 连接到 Angular Web App,页面仅重新加载