Mar*_*ens 16 random cryptography node.js
多么随机crypto.randomBytes(20).toString('hex')?
这很简单,我需要知道的一切.
Aur*_*001 22
多么随机crypto.randomBytes()?通常,随意足以满足您的需要.
crypto.randomBytes()生成加密安全的随机数据:
crypto.randomBytes(size [,callback])
生成加密强大的伪随机数据.size参数是一个数字,表示要生成的字节数.
这意味着随机数据足够安全,可用于加密目的.实际上,该函数只是 OpenSSL RAND_bytes()函数的包装器.这部分文档说明:
RAND_bytes将获取加密强大的随机字节.密码强字节适用于高完整性需求,例如长期密钥生成.如果您的生成器使用的是软件算法,则字节将是伪随机的(但仍然是加密强大的).
除非您有硬件随机数生成器,否则字节将从种子值可预测地伪随机生成.种子是从特定于操作系统的源(/dev/urandom在类Unix系统上,CryptGenRandom在Windows上)生成的.只要您的种子相对随机且攻击者不知道,所产生的数据将显得完全随机.
如果您愿意,可以执行此处描述的测试:
给定任意二进制数字序列,可以使用统计技术检查它.有各种统计测试套件,例如可从NIST的RANDOM NUMBER GENERATION页面获得的STS(统计测试套件).该套件提供了许多不同的测试,包括:
- 频率(单比特)测试:检查给定序列中0和1的比例是否与预期的大致相同
- 运行测试:测试给定序列中不同长度的连续相同数字的运行次数是否符合预期
- 块中的最长运行时间:确认序列中最长的单次运行是否与预期的一样
这样可以很好地指示您的发电机在系统上的随机性.但请放心,它可能几乎与真正的随机源无法区分,因此对于几乎任何应用来说它应该是足够随机的.
| 归档时间: |
|
| 查看次数: |
8970 次 |
| 最近记录: |