MD5简单介绍
大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件名做了任何改动,其MD5值也就是对应的“数字指纹”就会发生变化。
MD5可以解密吗?
MD5加密原理是散列算法,散列算法也称哈希算法。
比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了。
所以md5不能解密。也是为什么扣扣密码只能重置,不能找回的原因。
1.第一个种
import java.security.MessageDigest; public class Test { public static void main(String[] args) { Test test = new Test(); System.out.println(test.encryption("12345678")); } /** * * @param plainText * 明文 * @return 32位密文 */ public String encryption(String plainText) { String md5 = new String(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(plainText.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } md5 = buf.toString(); } catch (Exception e) { e.printStackTrace(); } return md5; } }
2.第二种
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { //待加密的密码 public static String password = "zjb0425"; public static void main(String args[]) { //结果字符串 String result = ""; try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(""); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } result = buf.toString(); System.out.println("MD5(" + password + ",32小写) = " + result); System.out.println("MD5(" + password + ",32大写) = " + result.toUpperCase()); System.out.println("++++++++++++++++++++++++各位大哥借过+++++++++++++++++++++++"); System.out.println("MD5(" + password + ",16小写) = " + buf.toString().substring(8, 24)); System.out.println("MD5(" + password + ",16大写) = " + buf.toString().substring(8, 24).toUpperCase()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } }
更多内容请关注: