【Java小工匠聊密碼學】–對稱加密–概述

java小工匠發表於2018-06-10

1、什麼是對稱加密

  對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文“原始資料”和“加密金鑰“一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的金鑰只有一個,發收信雙方都使用這個金鑰對資料進行加密和解密,這就要求解密方事先必須知道加密金鑰。

image.png

2、對稱密碼特點

(1)加密金鑰與解密金鑰相同,加密演算法與解密演算法互逆
(2)演算法公開、計算量小、加密速度快、加密效率高。
(3)雙方使用相同的金鑰,安全性得不到保障。

3、對稱密碼工作模式

(1)ECB:電子密碼本
   最基本的加密模式,也就是通常理解的加密,相同的明文將永遠加密成相同的密文,無初始向量,容易受到密碼本重放攻擊,一般情況下很少用。
(2)CBC:密碼連線
   明文被加密前要與前面的密文進行異或運算後再加密,因此只要選擇不同的初始向量,相同的密文加密後會形成不同的密文,這是目前應用最廣泛的模式。CBC加密後的密文是上下文相關的,但明文的錯誤不會傳遞到後續分組,但如果一個分組丟失,後面的分組將全部作廢(同步錯誤)。
(3)CFB:密文反饋
   類似於自同步序列密碼,分組加密後,按8位分組將密文和明文進行移位異或後得到輸出同時反饋回移位暫存器,優點最小可以按位元組進行加解密,也可以是n位的,CFB也是上下文相關的,CFB模式下,明文的一個錯誤會影響後面的密文(錯誤擴散)。
(4)OFB:輸出反饋
   將分組密碼作為同步序列密碼執行,和CFB相似,不過OFB用的是前一個n位密文輸出分組反饋回移位暫存器,OFB沒有錯誤擴散問題。
(5) CTR : 計數器
   計算器模式不常見,在CTR模式中, 有一個自增的運算元,這個運算元用金鑰加密之後的輸出和明文異或的結果得到密文,相當於一次一密。這種加密方式簡單快速,安全可靠,而且可以並行加密,但是在計算器不能維持很長的情況下,金鑰只能使用一次。

image.png

4、對稱密碼填充方式

(1) NoPadding
(2) PKCS5Padding
(3) ISO 10126

5、常用對稱加密演算法

(1)DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合;

(2)3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高;

(3)AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高,目前 AES 標準的一個實現是 Rijndael 演算法;


如果讀完覺得有收穫的話,歡迎點贊、關注、加公眾號【小工匠技術圈】

個人公眾號,歡迎關注,查閱更多精彩歷史!

image


相關文章