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,转载请注明。