- MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。具体来说文件的MD5值就像是这个文件的“数字指纹”。每个文件的MD5值是不同的,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。比如下载服务器针对一个文件预先提供一个MD5值,用户下载完该文件后,用我这个算法重新计算下载文件的MD5值,通过比较这两个值是否相同,就能判断下载的文件是否出错,或者说下载的文件是否被篡改了。
- 在数据库存储密码等保密信息时,可能会需要将数据md5加密后存储,下面是笔者写的一个md5加密的简单java实现:
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; public class MD5Util { /** * 对字符串md5加密 * * @param str 传入要加密的字符串 * @return MD5加密后的字符串 */ public static String backPass(String ostr) { String nstr = null; if (ostr != null) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); BASE64Encoder base = new BASE64Encoder(); nstr = base.encode(md5.digest(ostr.getBytes("UTF-8"))); System.out.println(nstr); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } return nstr; } public static void main(String[] args) { String str = "12345678909"; backPass(str); } }
- 由于MD5是单向加密,所以在密码存储等英应用中,可以选择将输入的密码进行相同的加密算法加密后做对比。