Java資料加密方法
阿新 • • 發佈:2019-01-31
1.SHA256加密就是一個雜湊函式。
雜湊函式,又稱雜湊演算法,是一種從任何一種資料中建立小的數字“指紋”的方法。雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料的格式固定下來。該函式將資料打亂混合,重新建立一個叫做雜湊值(或雜湊值)的指紋。雜湊值通常用一個短的隨機字母和數字組成的字串來代表。
對於任意長度的訊息,SHA256都會產生一個256bit長的雜湊值,稱作訊息摘要。
這個摘要相當於是個長度為32個位元組的陣列,通常用一個長度為64的十六進位制字串來表示
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.List; public class SHA256Utils { /** * 利用java原生的摘要實現SHA256加密 * @param str 加密後的報文 * @return */ public static String getSHA256StrJava(String str){ MessageDigest messageDigest; String encodeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(str.getBytes("UTF-8")); encodeStr = byte2Hex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return encodeStr; } /** * 將byte轉為16進位制 * @param bytes * @return */ private static String byte2Hex(byte[] bytes){ StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i=0;i<bytes.length;i++){ temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length()==1){ //1得到一位的進行補0操作 stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString(); } }
2.MD5加密
/** * MD5加密 * */ private static String MD5encode(String password) { try { //得到一個資訊摘要器 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()); StringBuffer buffer = new StringBuffer(); //把每一個byte做一個與運算0xff for(byte b:result) { int number = b & 0xff; String str = Integer.toHexString(number); if(str.length() == 1) { buffer.append("0"); } buffer.append(str); } //標準的MD5加密後的結果 return buffer.toString().toUpperCase(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } }