D E S 算 法 原 理 完 整 版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MD5加密算法与SHA加密算法
2、MD5加密
2.1?概述
Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC
1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992).
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT
Laboratory for Computer Science和RSA Data Security Inc的Ronald
L. Rivest开发出来,经MD2、MD3和MD4发展而来。
MD5用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。
2.2?算法原理
对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。
2.3 Java中的MD5实现
MD5加密算法的Java实现如下所示:
[java]?view
plain?copy
package?amigo.endecrypt;?
import?java.security.MessageDigest;?
*采用MD5加密?
*@authorXingxing,Xie
*@datetime2014-5-31
public?class?MD5Util?{?
*MD5加密?生成32位md5码?
*@param待加密字符串?
*@return返回32位md5码?
publicstaticStringmd5Encode(StringinStr)throwsExcepti on?{?
MessageDigestmd5=null;
md5=MessageDigest.getInstance("MD5");
}catch(Exceptione){
System.out.println(e.toString());
e.printStackTrace();
return"";
byte[]byteArray=inStr.getBytes("UTF-8");
byte[]md5Bytes=md5.digest(byteArray);
StringBufferhexValue=newStringBuffer();
for(inti=0;imd5Bytes.length;i++){
intval=((int)md5Bytes[i])0xff;
if(val16){
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
returnhexValue.toString();
*测试主函数?
*@paramargs
*@throwsException
publicstaticvoidmain(Stringargs[])throwsException{ Stringstr=newString("amigoxiexiexingxing");
System.out.println("原始:"?+?str);?
System.out.println("MD5后:"?+?md5Encode(str));?
测试结果:
原始:amigoxiexiexingxing
MD5后:e9ac094091b96b84cca48098bc21b1d6
3、SHA加密
3.1?概述
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
安全散列算法SHA(Secure Hash
Algorithm,SHA)是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。