1.使用Spring的DigestUtils
public class StringUtilTest { static final String TARGET = "changeme"; /* * 不可逆算法 MD5 */ @Test public void Md5() { String str = DigestUtils.md5DigestAsHex(TARGET.getBytes()); System.out.println("md5Hex: "+str); } }
結果為:
md5Hex: 4cb9c8a8048fd02294477fcb1a41191a
缺點為:只提供了MD5的加密算法
2.使用commons-codec(需要提供commons-codec包)
3.java MessageDigest
@Test public void test() { try { String password = "12345psw"; //MD5表示加密算法,可以選擇其他參數,如SHA-1等 MessageDigest digest = MessageDigest.getInstance("MD5"); //先調用update,再調動digest digest.update(password.getBytes()); byte[] byteResult = digest.digest(); //因為加密完為字節數組,需要轉化為字符串 String result = convertbyte2String(byteResult); System.out.println(result); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } } //將字節數組轉化為字符串 private String convertbyte2String(byte[] byteResult) { char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' }; //4位代表一個16進制,所以長度需要變為原來2倍 char[] result = new char[byteResult.length*2]; int index = 0; for(byte b:byteResult) { //先轉換高4位 result[index++] = hexDigits[(b>>>4)& 0xf]; result[index++] = hexDigits[b& 0xf]; } return new String(result); }