牛骨文教育服务平台(让学习变的简单)
博文笔记

MD5信息摘要算法

创建时间:2015-10-03 投稿人: 浏览次数:1175
MD5信息摘要算法  MD5即Message-Digest Algorithm 5(信息摘要算法5),是计算机广泛使用的散列算法之一(又译摘要算法、哈希算法)。经MD2、MD3和MD4发展而来,诞生于20世纪90年代初。用于确保信息传输完整一致。虽然已被破解,但仍然具有较好的安全性,加之可以免费使用,所以仍广泛运用于数字签名、文件完整性验证以及口令加密等领域。
  大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为司法机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的md5"数字指纹",如果任何人对文件做了任何改动,其MD5值也就是对应的"数字指纹"都会发生变化。
  具体来说文件的MD5值就像是这个文件的"数字指纹"。每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的"数字指纹"就会发生变化。比如下载服务器针对一个文件预先提供一个MD5值,用户下载完该文件后,用我这个算法重新计算下载文件的MD5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。
  利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
MD5字符串加密Java算法如下

public class MD5Tool { public final static String MD5(String str) { char hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", }; byte[] btInput = str.getBytes(); try { // 获得MD5摘要算法的MessageDigest对象 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用输入的字节更新摘要 mdInst.update(btInput); // 获得密文 byte[] code = mdInst.digest(); // 把密文转换成十六进制的字符串形式 char strChar[] = new char[code.length * 2]; int k = 0; for (int i = 0; i < code.length; i++) { byte byte1 = code[i]; strChar[k++] = hexDigits[byte1 >>> 4 & 0xf]; strChar[k++] = hexDigits[byte1 & 0xf]; } return new String(strChar); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { System.out.println(MD5Tool.MD5("加密")); System.out.println(MD5Tool.MD5("加密")); System.out.println(MD5Tool.MD5("我要加密")); System.out.println("---------------"); System.out.println(MD5Tool.MD5("abcdefg")); System.out.println(MD5Tool.MD5("abcdefg")); System.out.println(MD5Tool.MD5("abcdefh")); } } 运行结果

2C8DA3BF709F09E73EC143BA0F9AFC82
2C8DA3BF709F09E73EC143BA0F9AFC82
7093B6CF723B1AF87CBEE7CDD9EFB530
---------------
7AC66C0F148DE9519B8BD264312C4D64
7AC66C0F148DE9519B8BD264312C4D64
432AECAD47AB93EEB7784678D56A2C8A
相同的字符串MD5加密后结果是一样的,即使改变一个字符,结果也不相同。




声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。