盐对Bcrypt的随机性有多重要?

Cha*_*ens 3 perl bcrypt

我需要为Bcrypt生成盐,我试图了解我的PRNG需要多少随机,因为盐不会太弱以至于无法使用Bcrypt.我有五种一般的随机来源:

  1. Perl 5附带的PRNG用默认种子播种(这似乎是第二个的当前分数,包含当前秒的分数的事物的地址,进程的pid,以及Perl栈的地址)指针全部与一些素数混合在一起)
  2. Perl 5附带的PRNG播种了其他一些种子
  3. 其他一些基于Perl 5的PRNG就像 Math::Random::Secure
  4. 只是从中读取字节 /dev/urandom
  5. 只是从中读取字节 /dev/random

/dev/random我认为这个代码运行的机器已经太难了(当机器忙时,/proc/sys/kernel/random/entropy_avail低于500),否则这将是一个非问题,我只会使用/dev/random.也就是说,如果它足够重要,我将继续使用/dev/random/(人们不会经常设置新的密码).

Ole*_*kov 6

Salt仅用于在相同输入上运行多次时使散列函数的输出不同,并防止彩虹表攻击.密码强度由函数本身的实现提供.任何合理分布的RNG都可以对盐做好,不需要真正的熵.