我当然不能使用随机生成器。目前,我正在从unixtime()+ microtime()创建CRC32哈希。

有没有比hashingtime()+ microtime()更智能的方法了?

不过,我对结果并不完全满意,我希望它会更加随机,但是我可以看到其中的强大模式,直到我向MicroTime()添加了更多调用,但是它变得慢得多,所以我正在寻找一些方法最佳方式。

这段愚蠢的代码生成了到目前为止我可以做出的最好的输出,计算是必要的,或者我可以在输出中看到一些模式:

starthash(crc32);
    addtohash(crc32, MicroTime());
    addtohash(crc32, time(NULL)); // 64bit
    addtohash(crc32, MicroTime()/13.37f);
    addtohash(crc32, (10.0f-MicroTime())*1337.0f);
    addtohash(crc32, (11130.0f-MicroTime())/1313137.0f);
endhash(crc32);

MicroTime()返回从程序开始经过的微秒。我已经将addtohash()重载到每种可能的类型。

我宁愿使用非库解决方案,反正它只是大约10行代码,我不想安装庞大的库,因为我实际上并不需要那么多东西,而且我对代码更感兴趣而不是只是从函数调用中使用它。

最佳答案

如有疑问,请从Windows上的CryptGenRandom或* NIX系统上的dev/randomdev/urandom读取您的种子。

就您的目的而言,这可能是过高的,但是除非造成性能问题,否则没有时间像时间这样的低熵源会引起困惑。

这不太可能被杀。而且,如果您真正需要高质量安全随机数据的代码编写,而又不想在问题中提到,那么,您应该得到应有的;-)

09-09 19:20