对于加密的一些问题提出及求解。

  • A+
所属分类:WooYun-Zone

现在WEB应用程序 主流加密MD5 SHA1 或是加点盐,等等的。

为了用户密码的安全,作为程序设计者,完全能够对加密后的内容进行再加密或者其他算法的加密等。

比如对一串字符的加密

123456 32位md5:e10adc3949ba59abbe56e057f20f883e

我这样进行二次加密

均分两次

e10adc39

49ba59ab

be56e057

f20f883e

md5(e10adc39,16) = eda34954e7d9adce

md5(49ba59ab,16) = 3a53e05786c3b175

md5(be56e057,16) = 9dee36fbbb369c16

md5(f20f883e,16) = 7eb24b01a163ae72

入库我取eda34954e7d9adce3a53e05786c3b175(md5(e10adc39,16)+md5(49ba59ab,16))

进行验证。同样能达到效果。

为什么我们看到的结果却是极少有这样的情况。

这我是个外行,希望有人能解释。。

  1. 1#

    无敌L.t.H (‮……天百一爱恋考高:簿相色白产国) | 2012-12-30 18:00

    现在都上AES了。MD5有可能被碰撞出来。

  2. 2#

    0x0F (…………………………………………………………………………………………………………………………………………………………………………………………………………………………….) | 2012-12-30 18:02

    不是说MD5  我是说对加密方式 为什么 不去做进一步的自行完善。

  3. 3#

    piaoye (123) | 2012-12-30 18:05

    主要还是为了方便吧,省时省力省成本

  4. 4#

    小黑要低调 | 2012-12-30 18:06

  5. 5#

    0x0F (…………………………………………………………………………………………………………………………………………………………………………………………………………………………….) | 2012-12-30 18:07

    ..一开始我也是这么认为的,但是看很多大的站点泄露的数据库 才有这个疑惑。

  6. 6#

    0x0f3r (‍(核心黑帽子) | 2012-12-30 18:29

  7. 7#

    一刀终情 ((注意看时间,没乱哦!) ‫(1314520)) | 2012-12-31 00:01

    @0x0F 大站不是泄露的MD5,是明文……

  8. 8#

    xsjswt | 2012-12-31 01:10

    本质上还是一个hash,而且由于是你自己处理的MD5,没有经过严格的证明,冲突率可能比标准的MD5还高

  9. 9#

    xsjswt | 2012-12-31 01:11

    这样的处理在数学上不一定是完善,只是防止了泄露之后被直接利用的成本

  10. 10#

    0x0F (…………………………………………………………………………………………………………………………………………………………………………………………………………………………….) | 2012-12-31 06:30

    @xsjswt 能够防止被直接利用 威胁就会大大降低啊

  11. 11#

    0x0F (…………………………………………………………………………………………………………………………………………………………………………………………………………………………….) | 2012-12-31 06:30

    @一刀终情 精辟!

  12. 12#

    xsjswt | 2012-12-31 09:14

    @0x0F whatever,你觉得实用就好。只是,既然你都准备自己改,那干嘛还非要用MD5,换个其他的HASH不行么

  13. 13#

    一刀终情 ((注意看时间,没乱哦!) ‫(1314520)) | 2012-12-31 09:22

    @xsjswt 换个非主流一点的hash,比如CFS~~

  14. 14#

    xsjswt | 2012-12-31 10:19

    @一刀终情 对的,既然要自己改,就可以自己写一个hash

  15. 15#

    xsjswt | 2012-12-31 10:25

    楼主你想对付的是hash泄露后的直接利用,对付的思路是隐藏你的hash算法,那就做得更彻底一点,自己写一个hash

  16. 16#

    xsjswt | 2012-12-31 10:26

    某某书上说的,不代表我的观点,非原话,大概意思是:历史上很多人尝试通过隐藏自己的加密算法来保证安全,最后证明他们都是错的。算法很容易泄露。

  17. 17#

    xsjswt | 2012-12-31 10:28

    某某书还说:一个协议的安全不应该基于算法,算法的安全不应该基于隐藏算法细节,加密算法的安全要基于密钥的隐藏。
    一个协议必须可以被公开分析、公开的尝试破解,在经过大量的证明和攻击都失败后才能说明这个协议可能是安全的。
    算法也是。

  18. 18#

    0x0F (…………………………………………………………………………………………………………………………………………………………………………………………………………………………….) | 2012-12-31 14:00

    @xsjswt U R right.看来那些大的站点 程序员不这样做 应该还是懒。。。

  19. 19#

    horseluke (微碌) | 2012-12-31 14:19

    @xsjswt 说的基本都解答lz疑问了,基于抽屉原理,多次hash可能会存在增加碰撞冲突的问题,而且对运算和存储也是浪费。

    不过我也很疑惑一点,wordpress的密码算法也是多次hash(上百次的迭代式md5);它这种用运算时间搞出来的hash,可以解决冲突均匀化?

    事实上目前所有密码hash安全方案,其最佳目的均着眼于将攻击者的通用彩虹表失效,比如公认比较简易可行的加salt hash方案。自己搞算法。估计也是出于这种目的来做的。

    其余可参见:http://blog.csdn.net/antiy_seak/article/details/7166493

  20. 20#

    xsjswt | 2012-12-31 22:05

    @horseluke 几百次hash是为了增加计算成本。。。。当然是在不考虑冲突的前提下

  21. 21#

    cat73 | 2014-09-19 01:28

    我认为不是懒, 而且我认为你这么样加密对破解过程实际增加不了多少成本, 只是增加了不到10倍的破解时间而已.