1. 程式人生 > >Java資料加密方法

Java資料加密方法

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 "";
		}
	}