我需要生成特定范围内256位长的经过密码保护的安全随机数。我使用适合随机数发生器的微控制器(生产商称它是真正的随机数,基于热噪声)。 要生成的数字的上限以字节数组的形式给出。我的问题是:是否安全,逐字节获取随机数,并执行:
n[i] = rand[i] mod limit[i]
其中n [i]是我的号码的第i个字节等。
答案 0 :(得分:0)
使用RNG中所有位的标准方法是:
number <- random()
while (number outside range)
number <- random()
endwhile
return number
如果所需范围小于RNG输出大小的一半,则可以进行一些调整,但我认为这不是这种情况:它会将输出大小减少一位或多位。鉴于此,while
循环通常只会输入一次或两次。
比较字节数组相当简单,通常可以快速比较最重要的字节。如果最重要的字节不同,则根本不需要比较较不重要的字节。我们可以告诉7,###,###,###大于5,###,###,###,而不知道#代表什么数字。