本文只關(guān)注一個(gè)核心任務(wù) —— 如何把 64 位的明文,用 64 位的密鑰,加密成 64 位的密文,并執(zhí)行解密,需要理解這個(gè)過(guò)程。
DES已經(jīng)很少使用了,主要是想學(xué)習(xí)它的Feistel network (費(fèi)斯妥網(wǎng)絡(luò))。
其實(shí),了解這些加密的流程沒(méi)啥用,這些是無(wú)用的信息。我認(rèn)為要理解每個(gè)步驟背后的數(shù)學(xué)原理,數(shù)學(xué)觀點(diǎn)上證明它這個(gè)步驟是安全的,這個(gè)才是通用的、有用的知識(shí)。
一些基礎(chǔ)概念
對(duì)稱加密
雙方擁有同一個(gè)密鑰,加密、解密是同一個(gè)密鑰完成,該秘鑰不對(duì)第三方公開(kāi)。
分組密碼
分組密碼是將明文分成固定長(zhǎng)度的組,每一組都采用同一密鑰和算法進(jìn)行加密,輸出也是固定長(zhǎng)度的密文。
分組長(zhǎng)度
DES 加密算法中,明文和密文為 64 位分組。密鑰的長(zhǎng)度為 64 位,但是密鑰的每個(gè)第八位設(shè)置為奇偶校驗(yàn)位,因此密鑰的實(shí)際長(zhǎng)度為56位。
時(shí)序圖
DES 算法是在 Feistel network (費(fèi)斯妥網(wǎng)絡(luò))的基礎(chǔ)上執(zhí)行的。以下是 DES 算法的流程圖:
TODO...
步驟拆分
DES 加密流程大致分為 4 個(gè)步驟:
(1)初始置換
(2)生成子密鑰
(3)迭代過(guò)程
(4)逆置換
步驟挺長(zhǎng),每個(gè)步驟問(wèn)AI吧。
Reference
DES算法原理及實(shí)現(xiàn)
https://www.ruanx.net/des/
浙公網(wǎng)安備 33010602011771號(hào)