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加密及密码验证

猜你喜欢

转载自www.cnblogs.com/fabaogege/p/10111632.html