随机数生成、密码创建与存储的安全实践
1. 生成真正的随机数
1.1 问题提出
在安全领域,优质的随机数至关重要。因为密钥和初始化向量越随机,安全性就越高。然而,在确定性机器上,常见的 rand() 函数只是伪随机数生成器(PNG),生成的并非真正的随机数。真正的随机性只存在于自然现象中,如大气噪声、放射性衰变或熔岩灯。
1.2 解决方案
可以借助一些网络服务来获取真正的随机数, realrand 库封装了三个流行服务:
- RANDOM.ORG :从大气噪声生成真正的随机数。
- HotBits :通过连接计算机的盖革计数器检测连续的放射性衰变对来创建真正的随机数。
- EntropyPool :使用各种真正随机噪声源,包括本地进程、文件、设备和远程网站。
以下是使用 realrand 库的示例代码:
require 'rubygems'
require 'random/online'
include Random
[RandomOrg, FourmiLab, EntropyPool].each do |source|
generator = source.new
puts "#{generator.class}:\t" + generator.randbyte(5).join(',')
end
</
超级会员免费看
订阅专栏 解锁全文
34

被折叠的 条评论
为什么被折叠?



