如何在嵌入式系统

时间:2015-10-05 09:31:06

标签: random cryptography numbers embedded

我需要生成特定范围内256位长的经过密码保护的安全随机数。我使用适合随机数发生器的微控制器(生产商称它是真正的随机数,基于热噪声)。 要生成的数字的上限以字节数组的形式给出。我的问题是:是否安全,逐字节获取随机数,并执行:

n[i] = rand[i] mod limit[i]

其中n [i]是我的号码的第i个字节等。

1 个答案:

答案 0 :(得分:0)

使用RNG中所有位的标准方法是:

number <- random()
while (number outside range)
  number <- random()
endwhile
return number

如果所需范围小于RNG输出大小的一半,则可以进行一些调整,但我认为这不是这种情况:它会将输出大小减少一位或多位。鉴于此,while循环通常只会输入一次或两次。

比较字节数组相当简单,通常可以快速比较最重要的字节。如果最重要的字节不同,则根本不需要比较较不重要的字节。我们可以告诉7,###,###,###大于5,###,###,###,而不知道#代表什么数字。