一般来说,做项目时,在用户模块里,对用户的密码都是要进行加密的,这样在数据库表中看到的也不是明文密码。而是经过加密后的密码。在这里,我就介绍一种md5的加密方式。虽然现在这种加密方式也并不安全了(因为可以使用”md5在线解密”来得到密码)。但是,也可以写着练习一下。现在的加密技术推荐可以使用sha128、sha256、sha256+salt等等技术。
首先,你在你的项目中建立一个utils包,在里面创建一个Md5Util工具类,如下:
package com.oracle.cloudnote.utils;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
public class Md5Util {
public static String md5(String data) {
try {
byte[] md5 = md5(data.getBytes("utf-8"));
return toHexString(md5);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "";
}
public static byte[] md5(byte[] data) {
try {
MessageDigest md = MessageDigest.getInstance("md5");
md.update(data);
return md.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return new byte[]{};
}
private static String toHexString(byte[] md5) {
StringBuilder sb = new StringBuilder();
for(byte b : md5) {
sb.append(leftPad(Integer.toHexString(b & 0xff), '0', 2));
}
return sb.toString();
}
private static String leftPad(String hex, char c, int size) {
char[] cs = new char[size];
Arrays.fill(cs, c);
System.arraycopy(hex.toCharArray(), 0, cs, cs.length - hex.length(), hex.length());
return new String(cs);
}
}
如何使用?
直接调用该工具类的md5方法就可以对密码加密了,如下图: