【Java小工匠聊密碼學】–對稱加密–概述
1、什麼是對稱加密
對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文“原始資料”和“加密金鑰“一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的金鑰只有一個,發收信雙方都使用這個金鑰對資料進行加密和解密,這就要求解密方事先必須知道加密金鑰。
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模式中, 有一個自增的運算元,這個運算元用金鑰加密之後的輸出和明文異或的結果得到密文,相當於一次一密。這種加密方式簡單快速,安全可靠,而且可以並行加密,但是在計算器不能維持很長的情況下,金鑰只能使用一次。
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 演算法;
如果讀完覺得有收穫的話,歡迎點贊、關注、加公眾號【小工匠技術圈】
個人公眾號,歡迎關注,查閱更多精彩歷史!
相關文章
- 密碼學之對稱加密密碼學加密
- golang 密碼學-1. 對稱加密Golang密碼學加密
- golang 密碼學-2. 非對稱加密Golang密碼學加密
- 【Java小工匠】密碼學--base64編碼Java密碼學
- 編碼與加密(對稱加密與非對稱加密)加密
- 對稱與非對稱密碼體制密碼
- 對稱加密與非對稱加密加密
- 資料加密(對稱加密和非對稱加密)加密
- 對稱加密、非對稱加密、RSA(總結)加密
- 聊一聊非對稱加密在介面引數中的簡單實現加密
- https中的對稱加密和非對稱加密HTTP加密
- 對稱加密和非對稱加密(一)初步理解加密
- 加密原理詳解:對稱式加密VS非對稱式加密加密
- 寫給開發人員的實用密碼學(六)—— 對稱金鑰加密演算法密碼學加密演算法
- RSA加密原理&密碼學&HASH加密密碼學
- 前端使用bcrypt對密碼加密,伺服器對密碼進行校驗前端密碼加密伺服器
- 對稱加密體系加密
- golang 中,對稱加密的程式碼實現Golang加密
- 寫給開發人員的實用密碼學(七)—— 非對稱金鑰加密演算法 RSA/ECC密碼學加密演算法
- 密碼學系列之:twofish對稱金鑰分組演算法密碼學演算法
- 密碼學系列之:blowfish對稱金鑰分組演算法密碼學演算法
- 國密2 (sm2)非對稱加密解密工具--支援生成公鑰私鑰對及加密解密加密解密
- 非對稱加密體系加密
- 非對稱加密與 jwt加密JWT
- RSA 非對稱加密&解密加密解密
- 商密學習-分組密碼加密模式筆記密碼加密模式筆記
- Linux SSH是什麼?對稱加密和非對稱加密有何區別?Linux加密
- Linux系統中對稱加密和非對稱加密區別是什麼?Linux加密
- 聊聊對稱/非對稱加密在HTTPS中的應用加密HTTP
- 對稱、非對稱的加密技術是如何對網站資料進行雙重加密?加密網站
- 資訊保安對稱密碼分析實驗總結密碼
- Python學習——Caesar Cipher密碼破解(加密)方法Python密碼加密
- 網易遊戲登入密碼加密破解小試遊戲密碼加密
- Java 程式碼本地設定Hadoop使用者名稱密碼JavaHadoop密碼
- 非對稱加密--RSA原理淺析加密
- Java實現密碼、檔案MD5加密,密碼sha256、sha384、sha512Hex等加密Java密碼加密
- 密碼引擎-加密API研究密碼加密API
- mongodb對資料庫建立使用者名稱和密碼MongoDB資料庫密碼