import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Md5Util {
/**
* MD5 加密
*/
public static String getMD5Str(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
/**
* MD5 加密
*/
public static String getMD5Str(Object...objects){
StringBuilder stringBuilder=new StringBuilder();
for (Object object : objects) {
stringBuilder.append(object.toString());
}
return getMD5Str(stringBuilder.toString());
}
/**
* MD5 加密+加盐
*/
public static String getMD5BySalt(String loginName,String passwordUnencrypted ){
String hashAlgorithmName = "MD5";
int hashIterations = 1;
Object credentials = passwordUnencrypted;
Object salt = ByteSource.Util.bytes(loginName);
Object passwordEncrypted = new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations);
return ""+passwordEncrypted;
}
}
使用方法
小例子
// 密码简化加密
String passWordmd5Str = Md5Util.getMD5BySalt(userName,passWord); //校验密码是否一致
@Override
public Boolean checkUserPassword(String userName,String passWord, String userPassword) {
String passWordmd5Str = Md5Util.getMD5BySalt(userName,passWord);
if(passWordmd5Str.equals(userPassword)){
return true;
}else{
return false;
}
} 本文作者为DBC,转载请注明。