md5加密算法安全吗??

158 views
Skip to first unread message

韩天峰

unread,
Jul 4, 2008, 3:14:13 AM7/4/08
to pyth...@googlegroups.com
几天突然要手工在数据库里边添加一个帐户,密码是md5加密的。我想把123456作为密码,在Google找了个md5加密的网站,测算出来了md5的32位结果e10adc3949ba59abbe56e057f20f883e。
 
不经意间,发现e10adc3949ba59abbe56e057f20f883e这个如果再输入进去,竟然能够返回 123456 。我试了好几个密码,大部分都能被破解。
md5???失败。本来挺相信md5加密的。这样的话,基本上,如果我们的密码很简单,比如都是数字,一下就被破解了。
无奈呀。赶紧寻找新的算法吧。千万不能再光用md5了。

junyi sun

unread,
Jul 4, 2008, 3:17:31 AM7/4/08
to pyth...@googlegroups.com

md5还行吧,应该是密码太常见了,什么网站?能发给我看看吗?

可可熊

unread,
Jul 4, 2008, 3:18:55 AM7/4/08
to pyth...@googlegroups.com


在08-7-4,韩天峰 <mikan...@gmail.com> 写道:
不要使用9位以下的纯数字。


yuting cui

unread,
Jul 4, 2008, 3:19:37 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 韩天峰 <mikan...@gmail.com>:

无语...先弄清楚那个网站是干啥的以及密码的安全性依赖于什么再说
md5是不安全,但不是这种意义上的不安全

韩天峰

unread,
Jul 4, 2008, 3:20:08 AM7/4/08
to pyth...@googlegroups.com
http://www.cmd5.com/  大家来看看。
以后做密码的加密,必须使用md再结合自己的独特加密算法来做了。要不太危险。

@@

unread,
Jul 4, 2008, 3:20:18 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 junyi sun <ccn...@gmail.com>:


太常见的确实不行。。。

beck917

unread,
Jul 4, 2008, 3:20:27 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 junyi sun <ccn...@gmail.com>:
加secret key

beck917

unread,
Jul 4, 2008, 3:20:55 AM7/4/08
to pyth...@googlegroups.com
secret key + sha1

wuxiaoyu

unread,
Jul 4, 2008, 3:21:15 AM7/4/08
to pyth...@googlegroups.com
。。目前的md5crack完整都是检索型的。记录了N多md5加密后的数据。。查询一下就出来。。

limodou

unread,
Jul 4, 2008, 3:22:16 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 韩天峰 <mikan...@gmail.com>:

MD5应该不是加密算法,而且是不可逆的,所以你说的方式我感觉很奇怪。python自带md5的模块。不过同时也有sha的模块,它的强度要高于md5。

--
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://uliwebproject.appspot.com
My Blog: (new)http://http://hi.baidu.com/limodou
(old)http://www.donews.net/limodou

匡东

unread,
Jul 4, 2008, 3:22:20 AM7/4/08
to pyth...@googlegroups.com
这是因为这样的网站把很多密码对应的md5计算出来保存在了数据库中,而不是"测算"出来的,如果用复杂些的就很难查出来,毕竟他们的数据库是有限的。

2008/7/4 韩天峰 <mikan...@gmail.com>:



--
如切如磋,如琢如磨。

吴俊玉

unread,
Jul 4, 2008, 3:22:26 AM7/4/08
to pyth...@googlegroups.com

MD5是不安全,那也只是说在短时间内找到碰撞而以。

MD5只是数字摘要,同一个MD5可能会对应两个字符串(理由见上)

MD5只是用来生成文件摘要,防止篡改。

没听说MD5能够反向解密,除非他知道你输入5个字符!

没人用MD5来加解密吧?那是个什么网站?


在08-7-4,韩天峰 <mikan...@gmail.com> 写道:



--
北京市海淀区中软国际

韩天峰

unread,
Jul 4, 2008, 3:22:48 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 可可熊 cocob...@gmail.com:
 
不要使用9位以下的纯数字。
 
我们懂的人可以这么做,但是客户不懂呀,如果泄漏了客户的密码。那是多么可怕的事情。
不光是数字,能被破解,基本上,大部分常见词密码组合,都能被破解。他们有上亿的数据。

君邻天下

unread,
Jul 4, 2008, 3:26:10 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 yuting cui <yuti...@gmail.com>:

2008/7/4 韩天峰 <mikan...@gmail.com>:
> 几天突然要手工在数据库里边添加一个帐户,密码是md5加密的。我想把123456作为密码,在Google找了个md5加密的网站,测算出来了md5的32位结果e10adc3949ba59abbe56e057f20f883e。
>
> 不经意间,发现e10adc3949ba59abbe56e057f20f883e这个如果再输入进去,竟然能够返回 123456
> 。我试了好几个密码,大部分都能被破解。
> md5???失败。本来挺相信md5加密的。这样的话,基本上,如果我们的密码很简单,比如都是数字,一下就被破解了。
> 无奈呀。赶紧寻找新的算法吧。千万不能再光用md5了。


如果我没有猜错的话,那个网站的密码不是破解的,是查询的, 就是在你加密原始数据的时候对加密后数据入了库了, 你找一个特殊一些的密码,在本地MD5加密,然后你再扔给它去解密,看看它还能不能解出来,然后你用源数据到它那里加密一次再试

匡东

unread,
Jul 4, 2008, 3:26:30 AM7/4/08
to pyth...@googlegroups.com
可以考虑对密码作一个固定的变形,如末尾加上个字母,再md5,这样就查不出来了。

2008/7/4 韩天峰 <mikan...@gmail.com>:



--
如切如磋,如琢如磨。

韩天峰

unread,
Jul 4, 2008, 3:28:37 AM7/4/08
to pyth...@googlegroups.com
limodou 和 吴俊玉,说的很好。发现这方面很薄弱了。。
嗯。突然发现了这么个事情。
以前都是用md5加密的。  汗~~
是一个很大安全隐患呀。。可得注意了。。

vicalloy

unread,
Jul 4, 2008, 3:29:17 AM7/4/08
to pyth...@googlegroups.com
和前面的兄弟说的一样,你设置一个密匙。比如key='just a test'。
然后
md5(username+key+password)。
简单密码的单纯md5肯定不可靠了。

在08-7-4,韩天峰 <mikan...@gmail.com> 写道:

可可熊

unread,
Jul 4, 2008, 3:30:03 AM7/4/08
to pyth...@googlegroups.com


在08-7-4,韩天峰 <mikan...@gmail.com> 写道:


汇漏密码和md5的安全性没有关系啊,和你们网站的安全有关。
类似你看到的网站有很多,而且很早就开始存在了,但并没有对md5造成任何的威胁,在任何情况下使用纯数字密码和常见词汇密码都是不安全的。

当然你可以自己修改一下md5.
 

GaRY

unread,
Jul 4, 2008, 3:30:46 AM7/4/08
to pyth...@googlegroups.com
那是使用常见的密码组合,以及7位下所有数字的md5组合做的穷举字典。
所以太简单的hash很容易就能搜索出原始数据。
你换个复杂的数据,就还原不出了。

2008/7/4 匡东 <kuan...@gmail.com>:

Josh Yin

unread,
Jul 4, 2008, 3:31:26 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 韩天峰 <mikan...@gmail.com>:
> 赶紧寻找新的算法吧。千万不能再光用md5了。

sha1 再加把咸盐:
http://en.wikipedia.org/wiki/Salt_%28cryptography%29

--
Regards,
Josh.Yin/殷海明/A.K.A epaulin

GaRY

unread,
Jul 4, 2008, 3:33:26 AM7/4/08
to pyth...@googlegroups.com
http://www.xmd5.org/
http://milw0rm.com/md5/info.php

这种使用穷举技术破解的网站还有很多

2008/7/4 GaRY <wof...@gmail.com>:

韩天峰

unread,
Jul 4, 2008, 3:36:58 AM7/4/08
to pyth...@googlegroups.com
原来他们的原理是,字典破解。因为他们有很多 的 值 -> 密钥 ,数据。所以,如果是公开的算法的话,怎么都是不安全的。
无论是md5 还是 sha ,或者是 md5 + sha 。都会被收入字典。。反向破解。
 
我认为最有有效的办法是,必须在md5或者sha基础上,再自行设置的一中算法。

匡东

unread,
Jul 4, 2008, 3:40:43 AM7/4/08
to pyth...@googlegroups.com
好像这些算法都是可以加密钥的。

2008/7/4 韩天峰 <mikan...@gmail.com>:



--
如切如磋,如琢如磨。

GaRY

unread,
Jul 4, 2008, 3:43:05 AM7/4/08
to pyth...@googlegroups.com
salt是必要的

2008/7/4 匡东 <kuan...@gmail.com>:

LI Xin

unread,
Jul 4, 2008, 3:33:37 AM7/4/08
to pyth...@googlegroups.com
韩天峰 wrote:
> 几天突然要手工在数据库里边添加一个帐户,密码是md5加密的。我想把123456作
> 为密码,在Google找了个md5加密的网站,测算出来了md5的32位结果
> e10adc3949ba59abbe56e057f20f883e。
>
> 不经意间,发现e10adc3949ba59abbe56e057f20f883e这个如果再输入进去,竟然能
> 够返回 123456 。我试了好几个密码,大部分都能被破解。
> md5???失败。本来挺相信md5加密的。这样的话,基本上,如果我们的密码很简
> 单,比如都是数字,一下就被破解了。
> 无奈呀。赶紧寻找新的算法吧。千万不能再光用md5了。

加salt(一个随机串)。另外MD5不是加密算法而是散列算法。

--
Xin LI <del...@delphij.net> http://www.delphij.net/
FreeBSD - The Power to Serve!

signature.asc

limodou

unread,
Jul 4, 2008, 3:45:33 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 韩天峰 <mikan...@gmail.com>:

> 原来他们的原理是,字典破解。因为他们有很多 的 值 -> 密钥 ,数据。所以,如果是公开的算法的话,怎么都是不安全的。
> 无论是md5 还是 sha ,或者是 md5 + sha 。都会被收入字典。。反向破解。
>
> 我认为最有有效的办法是,必须在md5或者sha基础上,再自行设置的一中算法。
>

你可以看一下django的中处理,

def set_password(self, raw_password):
import random
algo = 'sha1'
salt = get_hexdigest(algo, str(random.random()),
str(random.random()))[:5]
hsh = get_hexdigest(algo, salt, raw_password)
self.password = '%s$%s$%s' % (algo, salt, hsh)

韩天峰

unread,
Jul 4, 2008, 3:53:42 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 limodou <lim...@gmail.com>:
多谢。。有一点不明白,登陆的时候,如何核对密码呢?

匡东

unread,
Jul 4, 2008, 3:55:44 AM7/4/08
to pyth...@googlegroups.com
md5当然是加密算法了,只是单向而已。无论如何加密的结果是其事实,不过,这只是名词之争,没多大意义。

2008/7/4 limodou <lim...@gmail.com>:



--
如切如磋,如琢如磨。

limodou

unread,
Jul 4, 2008, 3:56:16 AM7/4/08
to pyth...@googlegroups.com
>> 多谢。。有一点不明白,登陆的时候,如何核对密码呢?

def check_password(raw_password, enc_password):
"""
Returns a boolean of whether the raw_password was correct. Handles
encryption formats behind the scenes.
"""
algo, salt, hsh = enc_password.split('$')
return hsh == get_hexdigest(algo, salt, raw_password)

azhongjisupe

unread,
Jul 4, 2008, 4:00:51 AM7/4/08
to pyth...@googlegroups.com
或许人家服务器有缓存。要是计算的话,似乎还是不能够破解的吧。

____________________________________________________________________3c93bjf23-9a7dze790-ed1d854sb7#54b2cj304-19b5zf82c-4589s937615#

limodou

unread,
Jul 4, 2008, 4:02:21 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 匡东 <kuan...@gmail.com>:

> md5当然是加密算法了,只是单向而已。无论如何加密的结果是其事实,不过,这只是名词之争,没多大意义。
>

加密与解密是对应的,md5是摘要算法,不是加密算法吧。

azhongjisupe

unread,
Jul 4, 2008, 4:04:09 AM7/4/08
to pyth...@googlegroups.com
123456的md5值输入进入,可以解密出来-123456,但是如果把这个md5值任意该一位数值,然后解密都不能解密,所以应该是缓存。

____________________________________________________________________3c93bjf23-9a7dze790-ed1d854sb7#54b2cj304-19b5zf82c-4589s937615#

韩天峰 wrote:
> http://www.cmd5.com/ 大家来看看。
> 以后做密码的加密,必须使用md再结合自己的独特加密算法来做了。要不太危险。
>
> >

Samuel Chi

unread,
Jul 4, 2008, 4:04:05 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 韩天峰 <mikan...@gmail.com>:

任何形式的加密或者哈希算法,密码简单比如纯数字或纯小写或纯大写都是很容易暴力破解的.
什么是暴力破解呢?就是遍历所有情况得出结果.
比如纯数字,如果密码是4位,那么只要遍历10**4=10,000遍;6位也只要1,000,000遍就可以算出来!
一般来讲,设置密码要复杂一些,推荐是数字,大小写组合字母,特殊字符都有这样子就比较安全.

wangmao

unread,
Jul 4, 2008, 4:07:04 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 limodou <lim...@gmail.com>:

2008/7/4 匡东 <kuan...@gmail.com>:
> md5当然是加密算法了,只是单向而已。无论如何加密的结果是其事实,不过,这只是名词之争,没多大意义。
>

加密与解密是对应的,md5是摘要算法,不是加密算法吧。
从python把md5放在hashlib就可以看出它是一个hash散列算法,而并不是什么加密算法。吴俊玉的邮件已经解释得很清楚了...

limodou

unread,
Jul 4, 2008, 4:07:06 AM7/4/08
to pyth...@googlegroups.com
> 任何形式的加密或者哈希算法,密码简单比如纯数字或纯小写或纯大写都是很容易暴力破解的.
> 什么是暴力破解呢?就是遍历所有情况得出结果.
> 比如纯数字,如果密码是4位,那么只要遍历10**4=10,000遍;6位也只要1,000,000遍就可以算出来!
> 一般来讲,设置密码要复杂一些,推荐是数字,大小写组合字母,特殊字符都有这样子就比较安全.
>
都是没有密钥才会这样吧。

Samuel Chi

unread,
Jul 4, 2008, 4:07:24 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 limodou <lim...@gmail.com>:

2008/7/4 匡东 <kuan...@gmail.com>:
> md5当然是加密算法了,只是单向而已。无论如何加密的结果是其事实,不过,这只是名词之争,没多大意义。
>

加密与解密是对应的,md5是摘要算法,不是加密算法吧。

刚刚想写就被你说出来了.

匡东

unread,
Jul 4, 2008, 4:07:56 AM7/4/08
to pyth...@googlegroups.com
加密算法里面也有很多算法的,md5,sha1,bulefish都代表了各自的算法。加密算法也有很多类型,有单向的也有双向的,有的是对称的,有的不对称,还有需要证书的。否则怎么能构成密码学?

2008/7/4 limodou <limo...@gmail.com>:



--
如切如磋,如琢如磨。

韩天峰

unread,
Jul 4, 2008, 4:15:51 AM7/4/08
to pyth...@googlegroups.com
国内网站用得最多的论坛程序,Discuz。就是直接用md5来做密码加密算法的。
刚才我试了一下,从一个discuz的用户数据库,挑选出10来,全部能被破解。。
客户如果知道md5可以被轻易破解,将是一场危机。。!
 

limodou

unread,
Jul 4, 2008, 4:16:45 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 匡东 <kuan...@gmail.com>:

> 加密算法里面也有很多算法的,md5,sha1,bulefish都代表了各自的算法。加密算法也有很多类型,有单向的也有双向的,有的是对称的,有的不对称,还有需要证书的。否则怎么能构成密码学?
>

看这里: http://baike.baidu.com/view/7636.htm

MD5的全称是Message-digest Algorithm 5(信息-摘要算法)

fluke.l

unread,
Jul 4, 2008, 4:17:45 AM7/4/08
to pyth...@googlegroups.com
韩天峰 wrote:
> 几天突然要手工在数据库里边添加一个帐户,密码是md5加密的。我想把123456
> 作为密码,在Google找了个md5加密的网站,测算出来了md5的32位结果
> e10adc3949ba59abbe56e057f20f883e。
> 不经意间,发现e10adc3949ba59abbe56e057f20f883e这个如果再输入进去,竟然
> 能够返回 123456 。我试了好几个密码,大部分都能被破解。
> md5???失败。本来挺相信md5加密的。这样的话,基本上,如果我们的密码很
> 简单,比如都是数字,一下就被破解了。
> 无奈呀。赶紧寻找新的算法吧。千万不能再光用md5了。
>
这个是基于数据库的,不是什么算法。一方面是用机器狂算字典,一方面是搜集密
码映射表(比如一些论坛)。

然后反查的。

btw:现在貌似有人弄出有用的碰撞算法了,不知道是不是真的。能对一个exe构造
出一个和指定hash碰撞的版本来(当然这个exe要因为这个构造算法而被修改了,
但是还能被执行)。我是上网不经意看到的,现在没有出处,相信之前,请自己先
验证,我不负责:)
> >

limodou

unread,
Jul 4, 2008, 4:20:17 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 韩天峰 <mikan...@gmail.com>:

> 国内网站用得最多的论坛程序,Discuz。就是直接用md5来做密码加密算法的。
> 刚才我试了一下,从一个discuz的用户数据库,挑选出10来,全部能被破解。。
> 客户如果知道md5可以被轻易破解,将是一场危机。。!
>
关键是这个数据库你怎么得到的。如果连数据库都可以得到,要不要密码都不是什么问题了。

匡东

unread,
Jul 4, 2008, 4:25:36 AM7/4/08
to pyth...@googlegroups.com
> MD5的全称是Message-digest Algorithm 5(信息-摘要算法)

没错,Message-digest Algorithm 5是"加密算法"的一种,你所提到的那个网址也是这么归类的。"加密算法"和"检索算法"一样是一种类型,而不是一种具体的算法。

韩天峰

unread,
Jul 4, 2008, 4:26:17 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 limodou <lim...@gmail.com>:
呵呵,不用谈黑客。。论坛的管理员们,可以轻易看到这个密码。一般人,密码喜欢只用1个,比如银行卡等等什么的,和网站注册的密码,很可能一样。这样就是很危险的。
而且,这也是个客户信任问题。。
 
以前没有没有意识到这个问题,也没有足够重视。这次也是个深刻的教训!

limodou

unread,
Jul 4, 2008, 4:31:09 AM7/4/08
to pyth...@googlegroups.com
2008/7/4 匡东 <kuan...@gmail.com>:

>> MD5的全称是Message-digest Algorithm 5(信息-摘要算法)
>
> 没错,Message-digest Algorithm
> 5是"加密算法"的一种,你所提到的那个网址也是这么归类的。"加密算法"和"检索算法"一样是一种类型,而不是一种具体的算法。

它是密码算法,但不是加密算法。你在哪里看到说MD5是加密算法。密码学的东西是很多,但也不能随便一个算法就是加密算法吧。

匡东

unread,
Jul 4, 2008, 4:48:53 AM7/4/08
to pyth...@googlegroups.com
也许我孤陋寡闻吧,待会回去再把《密码学》看一遍。"加密算法"这个说法约定俗成,不过想想也确实有点问题,解密的过程似乎也不能归入"加密"之中,《中国人的性格》说中国人"极不精确",看来确实有一点。

2008/7/4 limodou <lim...@gmail.com>:



--
如切如磋,如琢如磨。

www jfy

unread,
Jul 4, 2008, 7:32:03 AM7/4/08
to pyth...@googlegroups.com
在08-7-4,韩天峰 <mikan...@gmail.com> 写道:

 
呵呵,不用谈黑客。。论坛的管理员们,可以轻易看到这个密码。一般人,密码喜欢只用1个,比如银行卡等等什么的,和网站注册的密码,很可能一样。这样就是很危险的。
而且,这也是个客户信任问题。。
 
以前没有没有意识到这个问题,也没有足够重视。这次也是个深刻的教训!


敢问一句,"论坛的管理员们,可以轻易看到这个密码。"是怎么得到的?论坛的管理员是没有论坛的访问权限的,只能管理论坛。否则,就不会有那么多进论坛后台后通过某种方法拿数据库(比如,备份数据库)的黑客文章了。
稍微正规一点的网站,不会把论坛放一台机上,然后管理员能管理所有东西,包括机子和论坛,除非是机子的所有者。

--
wwwjfy

jejwe

unread,
Jul 4, 2008, 8:36:02 AM7/4/08
to pyth...@googlegroups.com
这没什么可大关注的。我记四五年前搞PHP的论坛的时候就知道这个东西了。当时所以会有一些PHP论坛使用SHA1。还有就是MD5再MD5。当时中国有位教授就讲破解了MD5加密。不过这也没什么大惊小怪的。
 
四五年前也就有类似网站。但到现在还没看见哪个讲网站数据泄密出现密码被破。
如果你网站数据被泄密本身你的站程序就已经有问题了。 我觉得没必要讲是什么一场危机
 
顶多你用sha1加密

jejwe

unread,
Jul 4, 2008, 8:38:54 AM7/4/08
to pyth...@googlegroups.com
我以前也有较大用户的站。也能随便看到密码,当时也知道能破解。但我从来没试过去破解。如果你是站长,只是这样的人品那也没话说。
这么多年反正也没有出现这样的站长。
 
反正后来也是有PHP论坛使用MD5双重加密。或SHA1加密。不过都不是流行的如DISCUZ 和PHPWIND

@@

unread,
Jul 4, 2008, 8:43:37 AM7/4/08
to pyth...@googlegroups.com


2008/7/4 jejwe <jejw...@gmail.com>:

我以前也有较大用户的站。也能随便看到密码,当时也知道能破解。但我从来没试过去破解。如果你是站长,只是这样的人品那也没话说。
这么多年反正也没有出现这样的站长。
 
反正后来也是有PHP论坛使用MD5双重加密。或SHA1加密。不过都不是流行的如DISCUZ 和PHPWIND

关键站长如果想要你的密码的话他干嘛还要去md5。。。。。直接明文保存好了

不放心的小站就随便弄个密码吧。。或者就别注册。。。

Jiahua Huang

unread,
Jul 4, 2008, 1:05:19 PM7/4/08
to pyth...@googlegroups.com

浮躁啊……
前面那些个人的邮件你到底看了没有?

md5、sha1、sha512 都是 hash 算法,而不是"加密",
就是对任意长的字符串给出一个固定长度的签名字符串。

你那个所谓破解 md5,
就是收集了常见密码的 hash 值,所谓的破解,就是在常见密码的表里查找 md5 相同的。

多数密码字典都包括了你这样简单的数字、字母密码,
就算用"比 md5 安全得多的 sha512", 你这样的密码也是"瞬间破解",

这根本不是啥安全不安全的问题,而是你理解根本有误。

你说你尝试了好几个密码都能破机,说明你习惯的密码都是些弱密码,
都是人家的字典里存在的常见密码。

Jiahua Huang

unread,
Jul 4, 2008, 1:10:56 PM7/4/08
to pyth...@googlegroups.com
On 7/5/08, Jiahua Huang <jhuang...@gmail.com> wrote:
> 你说你尝试了好几个密码都能破机,说明你习惯的密码都是些弱密码,
> 都是人家的字典里存在的常见密码。
>

你别要弱密码看看,比如弄一句中文(或一句拼音也行)

如果你想"不懂"的用户不会发生这种情况,
就加密码强度确认,拒绝弱密码吧。

另外, md5 或其他 hash,都加上沙子(附加的字符串)好,


比如
salt = "你这也算密码?"

"加密"用
passwd = md5(salt + password)
核查判断
md5(salt + password) == passwd

韩天峰

unread,
Jul 5, 2008, 1:04:20 AM7/5/08
to pyth...@googlegroups.com

2008/7/5 Jiahua Huang <jhuang...@gmail.com>:


 
结贴:
md5的密码能够反向破解的话,就等于是明文保存在了服务器上。这是网站与用户信任度问题。不可能让客户将机密隐私暴露给网站。
而且比较厉害的黑客很有可能会,黑掉网站的服务器。并不能保证100%安全。这样黑客就得到了你基本上83%(取决于md5字典破解的命中率)以上客户的密码和信息资料。
 
limodou提的意见很不错。研究了django的加密原理,总结了以后加密的方法:
1.使用比md5复杂度更高的sha1算法。用md5算法的人太多了。
2.加入随机数的salt,使破解者无法得到原始的sha1算法结果。也就无法字典破解。
有些人会采用一个固定的salt,这样虽然安全度很高了,也是不最好的。对于高级黑客就不适用了。得到了网站的数据库,也一定能找出你的密钥- salt字串。只需要根据他的字典键,重新算一下字典值。又可以反向破解了。
随机数salt就一样了。他不可能去计算 为了计算其中一个密码,重新计算一次他的字典。
 
其实,就算是md5直接计算密码,保存客户密码的方法。也是没有几个人可以拿到客户密码的。
但是程序员一定要是追求完美的。决不放掉任何一个潜在的漏洞。

cpp.stl lim

unread,
Jul 5, 2008, 1:08:41 AM7/5/08
to pyth...@googlegroups.com
有人看过这个没有?
md5 已死, 这次不是碰撞这么简单了

2008/7/5 韩天峰 <mikan...@gmail.com>:

Jiahua Huang

unread,
Jul 5, 2008, 3:27:46 AM7/5/08
to pyth...@googlegroups.com
On 7/5/08, cpp.stl lim <cpp.s...@gmail.com> wrote:
> 有人看过这个没有?
> http://bbs.chinaunix.net/thread-1182816-1-3.html
> md5 已死, 这次不是碰撞这么简单了
>

依然是快速找出需要的碰撞。

新的程序直接 sha256 或 sha512 算了

Leo Jay

unread,
Jul 5, 2008, 4:05:05 AM7/5/08
to pyth...@googlegroups.com
2008/7/5 cpp.stl lim <cpp.s...@gmail.com>:

> 有人看过这个没有?
> http://bbs.chinaunix.net/thread-1182816-1-3.html
> md5 已死, 这次不是碰撞这么简单了
>

你去试过那个fastcoll_v1.0.0.5.exe程序么?我试了一下,完全没有什么用处嘛。

这个程序好像就是你给它一个文件,然后它自己在这个文件的后面分别加两段不同的数据生成两个文件,
然后这两个文件的md5相同。这完全是它自己在玩嘛,有什么用?

如果是,我给定一个文件和一个指定的md5值,然后它在文件后面加一些内容,生成的文件的md5就是我指定的值,那还差不多。

而且,即使是这样也不能说md5已死。在网站上,md5是用来做密码正确性判断的,这个程序生成的数据,是好几百字节
乃至好几k字节的不可见的字符,完全不可能输入到密码框里,就算你自己写程序post,也逃不过server端程序的检查,
一来长度不对(哪有允许设定1k字节密码的网站?),二来内容不对(不可见字符不可能是密码)。


--
Best Regards,
Leo Jay

LI Xin

unread,
Jul 5, 2008, 4:41:53 AM7/5/08
to pyth...@googlegroups.com
fluke.l wrote:
> btw:现在貌似有人弄出有用的碰撞算法了,不知道是不是真的。能对一个exe构造
> 出一个和指定hash碰撞的版本来(当然这个exe要因为这个构造算法而被修改了,
> 但是还能被执行)。我是上网不经意看到的,现在没有出处,相信之前,请自己先
> 验证,我不负责:)

旧闻了,是真的,好几年前的事情了。MD5的时代过去了,SHA1的末日也快到了,
现在用SHA256或者SHA512能够扛的时间稍长,具体参见美国联邦标准FIPS-180-2
(不过话说回来,这一族散列算法全都完蛋只是一个时间长短的问题,等待密码学
专家琢磨出新的算法吧)。

Cheers,
--
Xin LI <del...@delphij.net> http://www.delphij.net/
FreeBSD - The Power to Serve!

signature.asc

LI Xin

unread,
Jul 5, 2008, 5:01:03 AM7/5/08
to pyth...@googlegroups.com
azhongjisupe wrote:
> 123456的md5值输入进入,可以解密出来-123456,但是如果把这个md5值任意该一位数值,然后解密都不能解密,所以应该是缓存。
>
> ____________________________________________________________________3c93bjf23-9a7dze790-ed1d854sb7#54b2cj304-19b5zf82c-4589s937615#

j, s, #都出现了,大哥,MD5算出来的是128bit,您这个串的熵稍微多了点。

> 韩天峰 wrote:
>> http://www.cmd5.com/ 大家来看看。
>> 以后做密码的加密,必须使用md再结合自己的独特加密算法来做了。要不太危险。
>>
>

> --~--~---------~--~----~------------~-------~--~----~
> 来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
> 退订: http://tinyurl.com/45a9tb /针对163/qq邮箱:http://tinyurl.com/4dg6hc
> 详情: http://groups.google.com/group/python-cn
> 严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
> -~----------~----~----~----~------~----~------~--~---

signature.asc

Jiahua Huang

unread,
Jul 5, 2008, 5:07:44 AM7/5/08
to pyth...@googlegroups.com
他这串东西是 90后签名……
不是 md5

soldier

unread,
Jul 5, 2008, 5:09:06 AM7/5/08
to pyth...@googlegroups.com
两次加密怎么样?

2008/7/5 LI Xin <del...@delphij.net>:


> azhongjisupe wrote:
>> 123456的md5值输入进入,可以解密出来-123456,但是如果把这个md5值任意该一位数值,然后解密都不能解密,所以应该是缓存。
>>
>> ____________________________________________________________________3c93bjf23-9a7dze790-ed1d854sb7#54b2cj304-19b5zf82c-4589s937615#
>
> j, s, #都出现了,大哥,MD5算出来的是128bit,您这个串的熵稍微多了点。
>
>> 韩天峰 wrote:
>>> http://www.cmd5.com/ 大家来看看。
>>> 以后做密码的加密,必须使用md再结合自己的独特加密算法来做了。要不太危险。
>>>
>>
>> >>
>
>

> --
> Xin LI <del...@delphij.net> http://www.delphij.net/
> FreeBSD - The Power to Serve!
>
>

--
爱老婆,爱python

Jiahua Huang

unread,
Jul 5, 2008, 5:29:53 AM7/5/08
to pyth...@googlegroups.com
对于楼主这样玩,任何 hash 都是没用的,
太弱的密码

On 7/5/08, soldier <886...@gmail.com> wrote:
> 两次加密怎么样?
>

LI Xin

unread,
Jul 5, 2008, 7:23:22 AM7/5/08
to pyth...@googlegroups.com
soldier wrote:
> 两次加密怎么样?

两轮还不如SHA-256或者512呢。。。

signature.asc

马踏飞燕

unread,
Jul 5, 2008, 8:33:09 AM7/5/08
to pyth...@googlegroups.com
那就是一个数据库查询阿!
6位数字的组合也就100万条,加上索引,数据库查询很快的。
你换一个带字母的md5值,他肯定没有返回结果的。
目前所有的md5,sha等的破解其实都是穷举法,多线程的穷举,没有反向算法的。

在 08-7-4,韩天峰<mikan...@gmail.com> 写道:
> 几天突然要手工在数据库里边添加一个帐户,密码是md5加密的。我想把123456作为密码,在Google找了个md5加密的网站,测算出来了md5的32位结果e10adc3949ba59abbe56e057f20f883e。
>
> 不经意间,发现e10adc3949ba59abbe56e057f20f883e这个如果再输入进去,竟然能够返回
> 123456 。我试了好几个密码,大部分都能被破解。
> md5???失败。本来挺相信md5加密的。这样的话,基本上,如果我们的密码很简单,比如都是数字,一下就被破解了。
> 无奈呀。赶紧寻找新的算法吧。千万不能再光用md5了。
> >
>


--
免费手机铃声电子书下载,在线观看!
尽在 http://www.honeyday.org

马踏飞燕

unread,
Jul 5, 2008, 8:38:38 AM7/5/08
to pyth...@googlegroups.com
在 08-7-5,Leo Jay<python...@gmail.com> 写道:

还没到死的时候。
这个只是会有可能通过它来伪造身份,比如一个证书。你不知道对方的证书,但是你知道他的md5,所以你可以伪造一个md5一样的证书,但是却不一定是原来的那个,这样就可以骗过光用md5验证的关卡了。
真要这么干,还不如穷举、派间谍、用美人计来的快呢。

Valar

unread,
Jul 5, 2008, 9:53:59 AM7/5/08
to pyth...@googlegroups.com
已知算法的情况下单独加一个随机串增不了什么破解代价

Valar

unread,
Jul 5, 2008, 10:01:51 AM7/5/08
to pyth...@googlegroups.com


2008/7/5 马踏飞燕 <honey...@gmail.com>:
在 08-7-5,Leo Jay<python...@gmail.com> 写道:
> 你去试过那个fastcoll_v1.0.0.5.exe程序么?我试了一下,完全没有什么用处嘛。
>
> 这个程序好像就是你给它一个文件,然后它自己在这个文件的后面分别加两段不同的数据生成两个文件,
> 然后这两个文件的md5相同。这完全是它自己在玩嘛,有什么用?
>
>

还没到死的时候。
这个只是会有可能通过它来伪造身份,比如一个证书。你不知道对方的证书,但是你知道他的md5,所以你可以伪造一个md5一样的证书,但是却不一定是原来的那个,这样就可以骗过光用md5验证的关卡了。
真要这么干,还不如穷举、派间谍、用美人计来的快呢。

 
他说的那个相当于已知散列前的明文和散列结果求一个可以产生碰撞的明文,如果在不知道对方的证书的情况下来违造那就变成仅知道散列结果求明文了。

puluto

unread,
Jul 5, 2008, 9:23:59 PM7/5/08
to python-cn`CPyUG`华蟒用户组
如果黑客爆破需要重新计算字典值,那么你进行密码对比的时候就不需要~~除非你在另一个表记录每个用户建立的时候使用的salt值~~

On 7月5日, 下午1时04分, "韩天峰" <mikan.te...@gmail.com> wrote:
> 2008/7/5 Jiahua Huang <jhuangjia...@gmail.com>:

puluto

unread,
Jul 5, 2008, 9:35:48 PM7/5/08
to python-cn`CPyUG`华蟒用户组


On 7月4日, 下午4时26分, "韩天峰" <mikan.te...@gmail.com> wrote:
> 2008/7/4 limodou <limo...@gmail.com>:
>
> > 2008/7/4 韩天峰 <mikan.te...@gmail.com>:
> > > 国内网站用得最多的论坛程序,Discuz。就是直接用md5来做密码加密算法的。
> > > 刚才我试了一下,从一个discuz的用户数据库,挑选出10来,全部能被破解。。
> > > 客户如果知道md5可以被轻易破解,将是一场危机。。!
>
> > 关键是这个数据库你怎么得到的。如果连数据库都可以得到,要不要密码都不是什么问题了。
>
> > --
> > I like python!
> > UliPad <<The Python Editor>>:http://code.google.com/p/ulipad/
> > UliWeb <<simple web framework>>:http://uliwebproject.appspot.com
> > My Blog: (new)http://http://hi.baidu.com/limodou
> > (old)http://www.donews.net/limodou
>
> 呵呵,不用谈黑客。。论坛的管理员们,可以轻易看到这个密码。一般人,密码喜欢只用1个,比如银行卡等等什么的,和网站注册的密码,很可能一样。这样就是很危险的。
> 而且,这也是个客户信任问题。。
>
> 以前没有没有意识到这个问题,也没有足够重视。这次也是个深刻的教训!


我觉得既然使用服务就不要怀疑服务提供商的职业道德,如果真要得到客户的密码,那还不简单,直接在中间加个sniffer就好了,干嘛那么费劲破密码
也。。。。
管你什么加密算法,密码发过来的时候总是明文吧~~就算是ssl,服务器这边也有解密证书呢~~
Reply all
Reply to author
Forward
0 new messages