如何随机生成40位唯一值?

时间:2011-07-25 16:01:11

标签: random unique

我想生成40位值,这些值是唯一且不那么容易猜到的。

我该怎么办?有什么建议吗?

CNC中
我对算法感兴趣,C#或Java将成为最重要的樱桃!

-edit2-
我能够存储以前的值,但我不想每次生成新的数字时检查整个列表

3 个答案:

答案 0 :(得分:0)

你在哪个平台上?在unix-ish系统中,只读取/ dev / random中的40位(如果可用熵不足则为块)或/ dev / urandom(不阻塞,但如果熵有限,也会产生质量较低的随机数)。

答案 1 :(得分:0)

从第一个版本的程序(将是独特的部分)获得第一个12位(最多4095),其他38位使用来自随机系统调用/功能。 所以你最后一天才重新检查唯一的值。 抱歉,GRANT与非可预测(随机)值无关。

你可以使用更多日期,例如高达秒。你可以篡改可预测的(日期)位,但它不会增加安全性。

无论如何,你必须在独特的检查时间/随机质量之间取得平衡。为了提高检查速度,可以使用二叉树或其他技术。

你也可以使用高达毫秒的定时器值。对于繁忙的系统,它将是唯一的(如果线程锁定+ 50ms睡眠)并且在多线程环境中不可预测。

答案 2 :(得分:-1)

用什么?一般随机=唯一,所以使用随机。或

日期| md5sum | cut -b 4-9

类似的东西