首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

随机数——计算机有没有办法得到真正的随机数解决方案

2012-03-03 
随机数——计算机有没有办法得到真正的随机数rand这鬼函数大家都知道,很容易破解需要的是一种不能在两台机器

随机数——计算机有没有办法得到真正的随机数
rand   这鬼函数大家都知道,很容易破解

需要的是   一种不能在两台机器上产生出相同系列的随机数

现在想到的方法   是利用不同时刻   读取CPU内部定时器的值,
这个值   相对于某个数的余数是随机的

测试了一下,   这样的随机分部是比较均匀的,基本能满足需要
我自己想不出这样随机数的破解方法   但还是不放心      

1.   各位帮忙看看这样产生随机数的方法   是不是理论上可行的
    可能存在的破解方法
2.   也希望有大吓能   提供更好的方法
int   RndNum(int   rang)
{
if(rang   <   1)  
rang   =   1;
        __int64   cnt;
        _asm  
{
rdtsc//rdtsc   可以得到   CPU   内部定时器的值,   每经过一个   CPU   周期,   这个定时器就加一
mov   DWORD   PTR   cnt,   EAX//   当远远大于   rang时,取的随机值感觉上比较好
mov   DWORD   PTR   (cnt   +4),   EDX
}
int   r   =   cnt   %   rang;
return(r);
}



[解决办法]
方法太多了,^_^

hash你现在屏幕上的象素信息
得到主板检测的热量(如果你的主板有这种API的话)
哈希csdn上的滚动新闻标题
...


[解决办法]
靠,原来是你这个家伙在我的地盘捣乱啊。
你总得把你的需求说明确点吧?
比如随机数的范围?
感觉你取cpu的记数器也不是真正的随机数,想办法的话应该还是破解的

[解决办法]
取当前鼠标的位置
当前系统硬盘剩余空间(虚拟使用内存)的大小,
………
[解决办法]
如果我用汇编的int 1a 读秒得到1-100的随机数,这是随机的么?
rand db ?
;assembly code
int 1A
mov rand, dl

[解决办法]
这个问题很久前就有人提过了
http://topic.csdn.net/t/20041104/10/3520245.html
看看这篇文章:
http://www-128.ibm.com/developerworks/cn/security/playing/index.html

[解决办法]
有专用的硬件卡设备应该也可以。
[解决办法]
从理论上讲,破解cpu周期也不是不可能的,只要
1、每个cpu周期的值是一个常量
2、能精确的知道每条指令的周期数
3、用自动执行脚本精确的指定某个程序在指定的时间点开始运行,那么从理论上讲,
这个程序得到的cpu周期数是可以预先知道的
[解决办法]
linux不是自称可以产生真随机数?

所谓熵池的概念,取用户指定的噪音源(人机界面输入,硬件操作时间间隔)输入熵池,增加熵池的熵估计;在用户需要随机数时,hash这个熵池输出随机数,同时从熵池中删除一定的数据,在减少熵池的熵估计值。

既然linux使用这种办法,应该是经过数学证明的,产生的随机书不但随机而且可以平均分布
[解决办法]
检测CPU温度再乘以风扇的转速……
[解决办法]
老大说的intel的TIRNG?
http://www.cryptography.com/resources/whitepapers/IntelRNG.pdf

热点排行