對稱加密演算法----DES加密演算法
一、對稱加密演算法
對稱加密也稱為常規加密、私鑰或單鑰加密。
一個對稱加密由5部分組成:
- 明文(plaintext):這是原始資訊或資料,作為演算法的輸入。
- 加密演算法(encryption algorithm):加密演算法對明文進行各種替換和轉換。
- 金鑰(secret key):金鑰也是演算法的輸入。演算法進行的具體替換和轉換取決於金鑰。
- 密文(ciphertext):這是產生的已被打亂的訊息輸出。
- 解密演算法(decryption algorithm):本質上是加密演算法的反向執行。它使用密文和同一金鑰產生產生原始明文。
常用的演算法包括:
DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合。
3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard):高階加密標準,是下一代的加密演算法標準,速度快,安全級別高;
二、資料加密標準
資料加密標準(Data Encryption Standard, DES)於1977年被美國國家標準局(National Bureau of Standard, NBS),即現在國家標準和技術協會(National Institute of Standards and Technology,NIST)採納為聯邦46(FIPS PUB 46)。這個演算法本身指的是資料加密演算法(Data Encryption Algorithm)。DES採用了64位的分組長度和56位的金鑰長度。它將64位的經過一系列的變換得到64位的輸出,解密則使用了相同的步驟和相同的金鑰。
三、用c++程式實現DES加密和解密
下圖是DES加密演算法的整體流程圖:
64位輸入明文先進行初始置換IP,然後進行16輪相同的函式作用,最後在進行一個逆初始置換輸出64位的密文。上圖的右半部分是金鑰的產生和使用過程,首先64位金鑰壓縮置換後變為56位,然後進行迴圈左移和置換選擇得到子金鑰和每輪的輸入。
每輪的變換過程可以記為下面的公式:
明文輸入的64位,被分成兩部分L和R,R又作為下一輪迭代的L,R經過F函式的作用輸出32位的資料,再與本輪的L異或產生下一輪的R。
下圖解釋了S盒在F函式中的使用方法:
一共有8個S盒,每個S盒都輸入6位,輸出4位。盒Si輸入的第一位和最後一位組成一個二進位制數,用來選擇S盒4行代替值中的一行,中間4位組成的二進位制數用來選擇16列中的一列。選中的是十進位制數轉換成二進位制數後得到輸出的4位二進位制數。
相關文章
- 非對稱加密演算法-RSA演算法加密演算法
- 非對稱加密演算法的思考加密演算法
- 應用加密1;非對稱加密演算法揭祕加密演算法
- 第四篇:非對稱加密及RSA加密演算法加密演算法
- RSA非對稱加密演算法淺析加密演算法
- 對稱加密與非對稱加密加密
- 資料加密(對稱加密和非對稱加密)加密
- 編碼與加密(對稱加密與非對稱加密)加密
- DES--------Golang對稱加密之模式問題實戰Golang加密模式
- DES加密加密
- JWT令牌生成採用非對稱加密演算法JWT加密演算法
- 【RAS非對稱加密演算法】DEMO原理與示例加密演算法
- 對稱加密、非對稱加密、RSA(總結)加密
- DES演算法揭秘:資料加密的前沿技術演算法加密
- 加密原理詳解:對稱式加密VS非對稱式加密加密
- https中的對稱加密和非對稱加密HTTP加密
- 對稱加密和非對稱加密(一)初步理解加密
- 懂了!國際演算法體系對稱演算法DES原理演算法
- 一文搞懂對稱加密:加密演算法、工作模式、填充方式、程式碼實現加密演算法模式
- .NET Core加解密實戰系列之——對稱加密演算法解密加密演算法
- 對稱加密演算法在C#中的踩坑日常加密演算法C#
- DES加密簡述加密
- DES加密詳解加密
- 非對稱加密演算法RSA中的公鑰和私鑰加密演算法
- RSA非對稱加密演算法中的金鑰對生成與傳輸加密演算法
- 對稱加密體系加密
- 深入理解Triple DES演算法:安全加密的基礎與應用演算法加密
- 非對稱加密體系加密
- 非對稱加密與 jwt加密JWT
- RSA 非對稱加密&解密加密解密
- CWE-780:RSA演算法未使用最優非對稱加密填充漏洞演算法加密
- RSA加密演算法加密演算法
- 常用加密演算法加密演算法
- Rabbit加密演算法加密演算法
- 加密演算法(一)加密演算法
- SHA加密演算法加密演算法
- Linux SSH是什麼?對稱加密和非對稱加密有何區別?Linux加密
- Linux系統中對稱加密和非對稱加密區別是什麼?Linux加密
- 常見加密演算法及常見加密演算法簡述加密演算法