探讨:随机数生成算法
本人在开发一个网站,其中要求给想加入该网络的客户返回一个密码,由于涉及到商业利益,返回的密码不能有重复,还要能抵挡一定程度的攻击。虽然有现成的随机数生成函数,但那产生的只是伪随机数,远远不能满足要求;另外一方面,RSA,DES的实现又有一定的困难,大家一起来讨论讨论吧,也许能给我一定启发,在此先谢谢各位了!! 问题点数:100、回复次数:19Top
1 楼kwiner(ak.net)回复于 2002-10-04 10:58:36 得分 0
去www.google.com
或www.yahoo.com.cn
搜一下,很多的Top
2 楼afc(afc)回复于 2002-10-04 11:03:49 得分 0
RSA,DES的实现有什么困难?Top
3 楼common_man(吾与点也)回复于 2002-10-04 11:07:15 得分 0
我已搜索过了,没什么有价值的信息。
RSA,DES的资料只有教材上的描述而已,没有什么实际的指导意义。Top
4 楼common_man(吾与点也)回复于 2002-10-04 11:24:37 得分 0
好冷啊!Top
5 楼tigerfox(风之力:=Doing.浪淘沙)回复于 2002-10-04 11:32:33 得分 0
我不会,帮你UP吧Top
6 楼afc(afc)回复于 2002-10-04 11:34:02 得分 0
搜索RSA EURO可以得到RSA,DES,SHS,MD5等算法的C语言源代码Top
7 楼boyfling(GGS)回复于 2002-10-04 11:51:36 得分 0
找本密码学的书来看看Top
8 楼common_man(吾与点也)回复于 2002-10-04 17:18:11 得分 0
我去搜搜看Top
9 楼COOL_Fire_(墨子门徒)回复于 2002-10-04 17:47:09 得分 10
以本地系统时间(至少秒级,最好精确到毫秒)为seed得到的随机数不行吗?
Top
10 楼stonespace(stonespace)回复于 2002-10-04 18:01:29 得分 20
用md5算法可以产生128位的伪随即数序列,md5散列得很均匀,发生重复的概率极低。
Top
11 楼common_man(吾与点也)回复于 2002-10-08 09:54:15 得分 0
大家都来讨论一下吧!!Top
12 楼phoenixzz(小百货)回复于 2002-10-17 20:16:24 得分 0
upTop
13 楼coppermine(coppermine)回复于 2002-10-17 22:07:14 得分 0
用cocreateguid生成一个guid,128位,不会重复Top
14 楼JennyVenus()回复于 2002-10-18 10:41:10 得分 20
首先听 stonespace(stonespace) 的
用md5算法可以产生128位的伪随即数序列,md5散列得很均匀,发生重复的概率极低。
然后再添加一个时间(这个应该不重复吧)
还应该利用数据库进行重复检验Top
15 楼stonespace(stonespace)回复于 2002-10-18 10:52:27 得分 20
其实又一个极其简单的方法,保证绝对不重复,用一个简单的计数器,每分配一个密码给用户,计数器加一。
可以把计数器的值直接作为密码给用户。如果嫌攻击者可以猜到密码的范围,可以用计数器的值合并系统时间得到128位数据,然后用des算法加密一次,加密结果作为密码提供给用户,攻击者就无法猜到密码的范围。但是前提是攻击者不知道des加密的密钥。
Top
16 楼blackcrusoe(亚历山大)回复于 2002-10-22 12:53:24 得分 0
用斐波那契数列生成伪随机数。Top
17 楼phoenixzz(小百货)回复于 2002-10-22 17:08:58 得分 0
stonespace(stonespace)的方法比较可取。Top
18 楼Raceman35(云卷云舒)回复于 2002-11-01 12:06:44 得分 10
偶数位用伪随机数
奇数位维持一个计数器
密码奇偶位拼合
Top
19 楼iicup(双杯献酒)回复于 2002-11-01 12:21:43 得分 20
“产生密码”和“使用密码加密”
完全是两回事情。
您到底要问哪一个呢?
(1)“产生密码”只要生成一个随机数就可以了。
随机数不会要求不重复,因为您还有唯一的用户名和密码一起验证。
您可能会想到:
呕~~会不会因为有相等的密码导致.......
那么,您就又会要求:
这个随机数不能是 1,否则....
这个随机数也不能是 2,否则....
这个随机数也不能是 3,否则....
...... ;)
所以,避免重复是不必要的。
(2)如果您要“用密码加密”
我现在假定你已经有了一个随机(别人无法猜到)的密码。
您可以使用DES RAS等标准的实现方法。
看一看API中以Cryp开头的函数,或许对您有帮助.
网络上也有源代码。
Top




