常用的Java加密技術和核心代碼系列:
Base64以及關於Base64遇到的坑 https://blog.csdn.net/haponchang/article/details/106094115
消息摘要算法 https://blog.csdn.net/haponchang/article/details/106096542
對稱加密(DES、3DES、AES、PBE) https://blog.csdn.net/haponchang/article/details/106096766
非對稱加密(RSA、DH) https://blog.csdn.net/haponchang/article/details/106097998
數字簽名證書 https://blog.csdn.net/haponchang/article/details/106098779
概念
消息摘要(Message Digest)又稱爲數字摘要(Digital Digest)。它是一個唯一對應一個消息或文本的固定長度的值,它由一個單向Hash加密函數對消息進行作用而產生。HASH函數的抗衝突性使得如果一段明文稍有變化,哪怕只更改該段落的一個字母,通過哈希算法作用後都將產生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個不同的輸入消息,在計算上是不可能的。所以數據的哈希值,即消息摘要,可以檢驗數據的完整性。
通俗點說,就是通過消息摘要算法產生一段String。傳輸內容進行消息摘要處理後的內容,這樣就算服務器被攻破,Hack也無法知道用戶真實的內容是什麼。
常見的有MD5和SHA。
MD5
public String encode(String src){
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] encodeBytes = md.digest(src.getBytes());
return Hex.encodeHexString(encodeBytes);
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src){
throw new RuntimeException("MD5 no decode");
}
SHA
public String encode(String src){
try
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(src.getBytes());
return Hex.encodeHexString(md.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src){
throw new RuntimeException("SHA no decode");
}