JAVA加密系列(零)-加密運算合集與性能分析

JAVA加密系列(零)-加密運算合集與性能分析

加密介紹

單向加密

單向加密又稱爲不可逆加密算法,其密鑰是由加密散列函數生成的。單向散列函數一般用於產生消息摘要,密鑰加密等,常見的有:

  • 1、MD5(Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列算法,非可逆,相同的明文產生相同的密文;
  • 2、SHA(Secure Hash Algorithm):可以對任意長度的數據運算生成一個160位的數值。其變種由SHA192,SHA256,SHA384等;
  • 3、HMAC(Hash Message Authentication Code,散列消息鑑別碼)

算法特徵

  • 輸入一樣,輸出必然相同;
  • 雪崩效應,輸入的微小改變,將會引起結果的巨大變化;
  • 定長輸出,無論原始數據多大,結果大小都是相同的;
  • 不可逆,無法根據特徵碼還原原來的數據;

對稱加密

採用單鑰密碼的加密方法,同一個密鑰可以同時用來加密和解密,這種加密方法稱爲對稱加密,也稱爲單密鑰加密。常用的單向加密算法:

  • AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高,支持128、192、256、512位密鑰的加密;
  • DES(Data Encryption Standard):數據加密標準,速度較快,適用於加密大量數據的場合;
  • 3DES(Triple DES):是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高;
  • Blowfish 等等 包括後面會提到的位運算加密

算法特徵

  • 加密方和解密方使用同一個密鑰;
  • 加密解密的速度比較快,適合數據比較長時的使用;
  • 密鑰傳輸的過程不安全,且容易被破解,密鑰管理也比較麻煩;

非對稱加密

非對稱密鑰加密也稱爲公鑰加密,由一對公鑰和私鑰組成。公鑰是從私鑰提取出來的。可以用公鑰加密,再用私鑰解密,這種情形一般用於公鑰加密;也可以用私鑰加密,用公鑰解密,常用於數字簽名,因此非對稱加密的主要功能就是加密和數字簽名。

  • RSA 第一個能同時用於加密和數字簽名的算法,也易於理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現今的三十多年裏,經歷了各種攻擊的考驗,逐漸爲人們接受,截止2017年被普遍認爲是最優秀的公鑰方案之一。
  • DSA Elgamal和Schnorr數字簽名的一個變種,DSA數字簽名優於Elgamal數字簽名的地方在於它的簽名長度較短,並且某些可以破解Elgamal方案的攻擊不適用DSA數字簽名
  • ECC 橢圓曲線密碼編碼學,是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制。在軟件註冊保護方面起到很大的作用,一般的序列號通常由該算法產生。
  • Elgamal 其基礎是DiffieˉHellman密鑰交換算法,應對中間人攻擊時非常脆弱。

算法特徵

  • 密鑰對,公鑰(public key)和私鑰(secret key)
  • 可以完成數字簽名和數字鑑別。
  • 公鑰密碼是對大數進行操作,計算量特別浩大,速度遠比不上私鑰密碼體制。(私鑰加密快,公鑰解密慢)

性能比較

源碼下載

GitHub,感興趣的點個星星

詳情文章

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