设计 工具 系统 开发 安全 办公 陶吧 IT教育 Vista频道|Google Chrome 参与WS-AT全局事务
您现在的位置: 天极网 > 软件频道 > IT教育频道 > 培训辅导 > 【软考】MD5算法基础
全文

【软考】MD5算法基础

2005-09-29 08:53作者:出处:摘自互联网责任编辑:王玉涵

  MD5产生一个128位的HASH值,在经过一写初始树立后,将明文分成了512位的块,再将每一块分成16个32位的子块。算法的输出是4个32位的块,连接起来构成128位的HASH值。

  首先,将消息填充到比512的倍数少64位,填充时先向消息末尾填一个1,然后再填满0,然后后面再加上一个64位的消息长度的表示(不包括填充位)。这两步使消息长度恰好是512的倍数,同时保证不同消息在填充后仍不相同。

  初始化4个32位变量:

  A=0x01234567

  B=0x89abcdef

  C=0xfedcba98

  D=0x76543210

  这些变量成为链变量。

  然后,开始算法的主循环。这个循环对消息中所有的块都执行一次。将4个变量复制到不同的变量:a值为A,b值为B,c值为C,d值为D。

  主循环有4圈,都很相似。每圈使用一个不同的操作,重复16次。每个操作完成一个a,b,c和d中三个变量的非线性函数。然后,将结果与第四个变量、文本的一个子块和一个常数相加。然后,将结果混换左移一个可变值的位数,再将结果与a,b,c和d之一相加。最后用结果来代替a,b,c和d之一。

  共有4个非线性函数,每次操作使用一个,每圈都不相同。

  F(X,Y,Z)=(X∧Y)∨((「X)∧Z)

  G(X,Y,Z)=(X∧Z)∨(Y∧(「z))

  H(X,Y,Z)=X㈩Y㈩Z

  I(X,Y,Z)=Y㈩(X∧(「z))

  ㈩为异或,∧为与,∨为或,「为非

  如果Mi代表消息的第i个子块(0到15),而<<

  FF(a,b,c,d,Mj,s,ti)代表=a=b((a+F(b,c,d)+Mj+ti)<<

  GG(a,b,c,d,Mj,s,ti)代表=a=b((a+G(b,c,d)+Mj+ti)<<

  HH(a,b,c,d,Mj,s,ti)代表=a=b((a+H(b,c,d)+Mj+ti)<<

  II(a,b,c,d,Mj,s,ti)代表=a=b((a+I(b,c,d)+Mj+ti)<<

  

共2页。 1 2 下一页 末页
相关搜索:
相关文章及软件
关注此文读者还看过
文章排行
本周
本月
最近更新
关于我们|About us|网站律师|天极服务|电子杂志|RSS订阅|加入我们|网站地图
TMG
Copyright (C) 1999-2009 Chinabyte.com, All Rights Reserved 版权所有 天极网络
商务联系、网站内容、合作建议:010-82657868
版权声明 在线提交意见反馈 渝ICP证B2-20030003号
经营性网站备案信息 网警备案 中国网站排名
天极传媒:天极网|比特网|IT专家网|IT商网|52PK游戏网|IT分众