MD5加密及密码验证
Posted fabaogege
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5加密及密码验证相关的知识,希望对你有一定的参考价值。
MD5加密是常用的加密算法。可以对任意字符串的进行加密。生成16位字符数组。
密码验证:将输入的密码进行MD5加密转换后的字符串与数据库的密码进行比对。相等则验证通过。
1 package utils; 2 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 6 public class MD5Utils{ 7 /** 8 * 字符串的加密 9 * @param str 10 * @return byte[] 11 * @throws NoSuchAlgorithmException 12 */ 13 public static byte[] encryptionStr(String str) throws NoSuchAlgorithmException { 14 if(str!=null){ 15 //加密后得到的字节数组 16 byte[] bytes = null; 17 // 获取MD5算法实例 得到一个md5的消息摘要 18 MessageDigest md = MessageDigest.getInstance("MD5"); 19 //添加要进行计算摘要的信息 20 md.update(str.getBytes()); 21 //得出摘要结果 22 bytes = md.digest(); 23 return bytes; 24 } 25 return null; 26 } 27 //字符数组转成字符串 28 private static String toHex(byte[] bytes) { 29 30 final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray(); 31 StringBuilder ret = new StringBuilder(bytes.length * 2); 32 for (int i=0; i<bytes.length; i++) { 33 ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); 34 ret.append(HEX_DIGITS[bytes[i] & 0x0f]); 35 } 36 return ret.toString(); 37 } 38 //密码验证 39 /* 40 * 将加密后的字节数组转换成十六进制的字符窜,形成最终的密码。 41 * 当输入字符串经过MD5加密后,得到的字符串与密码一样,则认为密码验证通过。 42 * */ 43 public static boolean verification(String inputPassword,String dbPassword) throws NoSuchAlgorithmException { 44 String passwordByMD5 = toHex(encryptionStr(inputPassword)); 45 if(dbPassword.equals(passwordByMD5)){ 46 return true; 47 } 48 return false; 49 } 50 public static void main(String[] args) throws NoSuchAlgorithmException { 51 String a = "test1"; 52 String b ="test2"; 53 String c ="ABCDE"; 54 String [] str={a,b,c}; 55 for (String s : str) { 56 byte [] bytes=encryptionStr(s); 57 System.out.println("数据:" + s+" 加密后为:"+bytes.toString()); 58 } 59 String dbPassword = toHex(encryptionStr("abcdef")); 60 System.out.println(dbPassword); 61 String inputPassword = "abcdef"; 62 String inputPassword2 = "abcdeffff"; 63 System.out.println(verification(inputPassword,dbPassword)); 64 System.out.print(verification(inputPassword,inputPassword2)); 65 } 66 }
gitHub源码:MD5加密及密码验证
以上是关于MD5加密及密码验证的主要内容,如果未能解决你的问题,请参考以下文章