幾種常見的加密算法

下面寫幾種常見的方法涉及到的工具方法。

1. Base64加密算法

Base64加密算法是網絡上最常見的用於傳輸8bit字節代碼的編碼方式之一,Base64編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在JAVAPERSISTENCE系統HIBEMATE中,採用了Base64來將一個較長的唯一標識符編碼爲一個字符串,用作HTTP表單和HTTPGETURL中的參數。在其他應用程序中,也常常需要把二進制數據編碼爲適合放在URL(包括隱藏表單域)中的形式。此時,採用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
String 和 base64 的相互轉換:

public static String stringtobase64(String s) {
	try {
		String encodeStr = Base64.encodeToString(s.getBytes(), Base64.DEFAULT);
		return encodeStr;
	} catch (Exception e) {
		return s;
	}
}

public static String base64tostring(String s) {
	try {
		String decodeStr = new String(Base64.decode(s.getBytes(), Base64.DEFAULT));
		return decodeStr;
	} catch (Exception e) {
		return s;
	}
}

2.Md5(消息摘要)

MD5爲計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。對MD5加密算法簡要的敘述可以爲:MD5以512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成—個128位散列值。

MD5被廣泛用於各種軟件的密碼認證和鑰匙識別上。MD5用的是哈希函數,它的典型應用是對一段信息產生信息摘要,以防止被篡改。MD5的典型應用是對一段Message產生fingerprin指紋,以防止被“篡改”。如果再有—個第三方的認證機構,用MD5還可以防止文件作者的“抵賴”,這就是所謂的數字簽名應用。MD5還廣泛用於操作系統的登陸認證上,如UNIX、各類BSD系統登錄密碼、數字簽名等諸多方。

/**
 * Md5Encoder
 *
 */
public static String encodeMD5toUpperCase32(String str) {
	try {
		MessageDigest md;
		md = MessageDigest.getInstance("MD5");
		byte[] bt = str.getBytes();
		md.update(bt);
		str = bytes2Hex(md.digest()); // to HexString
	} catch (Exception e) {
		e.printStackTrace();
	}

	return str.trim().toUpperCase();
}

private static String bytes2Hex(byte[] bts) {
	StringBuilder des = new StringBuilder();
	String tmp;
	for (byte bt : bts) {
		tmp = (Integer.toHexString(bt & 0xFF));
		if (tmp.length() == 1) {
			des.append("0");
		}
		des.append(tmp);
	}
	return des.toString();
}

關於更多加密算法的介紹和區別,詳情參考如下文章:
https://www.cnblogs.com/sunxuchu/p/5483956.html
https://blog.csdn.net/ddffr/article/details/77153127

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章