1. 程式人生 > >Java/Android中SHA1和SHA256加密

Java/Android中SHA1和SHA256加密

SHA1(Secure Hash Algorithm,譯作安全雜湊演算法)Hash演算法中的一種,適合用於數字簽名資料認證,加密過程不可逆不能進行解密。

MD5SHA1都是Hash演算法,MD5輸出是128位的,SHA1輸出是160位的SHA256輸出是256MD5SHA1快,SHA1MD5強度高。

程式碼:

/**
	 * SHA加密
	 * 
	 * @param strSrc
	 *            明文
	 * @return 加密之後的密文
	 */
	public static String shaEncrypt(String strSrc) {
		MessageDigest md = null;
		String strDes = null;
		byte[] bt = strSrc.getBytes();
		try {
			md = MessageDigest.getInstance("SHA-256");// 將此換成SHA-1、SHA-512、SHA-384等引數
			md.update(bt);
			strDes = bytes2Hex(md.digest()); // to HexString
		} catch (NoSuchAlgorithmException e) {
			return null;
		}
		return strDes;
	}

	/**
	 * byte陣列轉換為16進位制字串
	 * 
	 * @param bts
	 *            資料來源
	 * @return 16進位制字串
	 */
	public static String bytes2Hex(byte[] bts) {
		String des = "";
		String tmp = null;
		for (int i = 0; i < bts.length; i++) {
			tmp = (Integer.toHexString(bts[i] & 0xFF));
			if (tmp.length() == 1) {
				des += "0";
			}
			des += tmp;
		}
		return des;
	}