再认识MD5加密算法

 

    MD5是非常有名的加密算法,大学的算法教程里面也有学 ,不 工作后没怎么用 ,具体内容差不多都忘 了。
    最近在一个项目中用到了 MD5加密,但客 户担心个人信息泄露,询问我们加密后的内容是不是唯一的?
    MD5是散列算法,MD5的全称是Message-digest Algorithm 5(信息-摘要算法)。要重复是非常不容易的,还有现在也有不少网站有对 MD5加密后文字列 进行 解密。由于我 们项目中的加密前的文字列是唯一的,我的第一感觉那应该加密结果也是唯一的了。
    但由于没有明确的理由,同 时也不知道自己的想法是不是对。只好上网 询,重新学习了一下 MD5算法。
    MD5算法 要地可以叙述 :MD5以512位分 入的信息,且每一分 又被划分 16个32位子分 经过 了一系列的 理后,算法的 出由四个32位分 组组 成,将 四个32位分 组级联 后将生成一个128位散列 。 
    MD5算法主要步骤:
   
1:首先需要 信息 行填充,使其位 长对 512求余的 果等于448。
        信息的位
(Bits Length)将被 展至N*512+448,即N*64+56个字 (Bytes),N 一个正整数。填充的方法如下,在信息的后面填充一个1和无数个 0,直到 足上面的条件 才停止用0 信息的填充。然后,在在 果后面附加一个以64位二 制表示的填充前信息 度。 经过这 两步的 理, 在的信息的位 =N*512+448+64=(N+1)*512,即 度恰好是512的整数倍。 这样 做的原因是 为满 足后面 理中 信息 度的要求。
    2:初始化MD 缓存。
         为了计算消息摘要,将提供 4 8 字节的缓冲区。他们分别为: A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210
    3: 针对 1得到的 果,每 16个字 块进 理。也就是每 64byte作 组进 理。
        操作中用到的四个非 线 性函数
         F(X,Y,Z) = XY v not(X) Z
         G(X,Y,Z) = XZ v Y not(Z)
         H(X,Y,Z) = X xor Y xor Z
         I(X,Y,Z) = Y xor (X v not(Z))

  
     四个函数的 明:如果 X Y Z 对应 位是独立和均匀的,那么 果的每一位也 是独立和均匀的。
  
     F 是一个逐位运算的函数。即,如果 X ,那么 Y ,否 Z 。函数 H 是逐位奇偶操作符。
         然后做4
演算得出
    确 非常安全,不 2004年8月17日的美国加州圣巴巴拉的国 学会 (Crypto’2004)上,来自中国山 大学的王小云教授做了破 MD5、HAVAL-128、 MD4和RIPEMD算法的 告,公布了MD系列算法的破解 果。不 同的原文字串可能得出同样的结果。 宣告了固若金 的世界通行密 码标 准MD5的堡 垒轰 然倒塌,引 了密 学界的 然大波。
    不同的原文字串可能得出同 果, 这样 就可以回答客 户说 并不是 绝对 唯一的。但光告 他不是唯一就可以了 ,那肯定是不行的。具体就是在MD5加密的基 础再加上其他的限制条件,尽量避免这种实际上很难发生的事情。

参考网页:百度百科(http://baike.baidu.com/view/7636.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值