MT19937伪随机数算法是什么?它存在什么漏洞?今天奇趣编程结合奇趣随机数生成器和大家分享一下。
也许大家没听说过MT19937伪随机数算法,但它存在于很多程序中,比如python中内置的random类就是使用MT19937伪随机数算法,python通过调用getrandbits(32)就可以生成一个32位的随机数。
MT19937伪随机数算法,是一种周期比较长的随机数生成算法,它的特点在于可以生成随机数的效率很高,并且随机数很随机。它的算法大体上可以分成以下几步:
1、利用随机数种子初始化624的状态。
2、对624的状态进行旋转。
3、对旋转后的624状态提取出随机数。
知道了以上算法的原理,我们就可以深入研究看它是否存在漏洞了。通过逆向分析,奇趣编程发现它的矩阵存在可逆的线性关系,因此我们可以对此算法产生的随机数进行预测。预测的方法是只需要前面624个随机数用来恢复出624个状态,然后后面生成的随机数都可以预测出来了。具体可以联系奇趣编程交流探讨。