-密碼學
這兩種DES(數據加密標準)和AES(高級加密標準)是美國的加密標準。傳統 DES 使用 IBM 開發的 Lucifer,而當前標準 AES 通過開放選擇指定 Rijndael。通常將 DES 和 AES 稱為密碼本身。例如,AES 和 Rijndael 的不同之處在於,“Rijndael 本身指定的塊和密鑰大小可以是 32 位的任意倍數,最小為 128 位,最大為 256 位。” 但是,AES 指定了 128 位的“固定塊大小”,但密鑰大小有 128、192 或 256 位三種選擇。(維基百科)
DES 和 AES 是分組密碼。塊是一組位。塊是塊密碼的基本處理單元。DES 將數據分成 64 位塊,而 AES 以 128 位塊處理數據。但是,密鑰可能不等於數據塊。DES 密鑰大小名義上是 64 位(8 字節),但一個字節的每一位都是所謂的用於錯誤控制的奇偶校驗位。因此,有效密鑰長度為 56 位(64-8=56)。DES 塊大小比其後繼 AES 小得多,AES 使用 128 位塊。
因為分組密碼使用固定大小的塊,明文不能總是分成整個塊或塊大小的倍數。“ Padding ”是將數據加入明文中以便將其劃分為完整塊的過程。位置(開始、中間或結束)、單位(位或字節)和模式(全為零或全為 1)是填充問題。ANSI X9.23、PKCS#5、PKCS#7、ISO/IEC 7816-4 等是處理填充數據模式的標準。
ECB 模式中的 AES 可能不涉及初始化向量 (IV)。分組密碼可以在各種操作模式下工作。最著名的電子代碼簿 (ECB) 不涉及啟動向量,但可能會生成重複的模式。
DES 於 1970 年代初由 IBM 開發,基於 Horst Feistel 的早期設計。它於 1976 年被批准為美國加密標準。三重 DES (3DES/TDES) 是 DES 在 1990 年代被破壞後的一種解決方法。3DES 使用相同的 DES 算法三次以增加工作因子。3DES 需要三個密鑰(每個 DES 操作一個);但是,第一次使用的密鑰可以在第三次處理時使用。名義上,3DES 使用三個密鑰,但實際上它可以使用兩個密鑰(第一次和第三次使用相同的密鑰)。DES3-EEE 意味著使用三個不同的密鑰應用 DES 加密三次。
參考
. 分組密碼
. 高級加密標準
. 數據加密標準
. 三重DES
. 奇偶校驗位(維基百科)
. 填充(密碼學)
. 初始化向量
. java中AES-256加密需要多大的初始化向量?
. RSA 中的典型塊大小是多少?
資料來源: Wentz Wu QOTD-20210629
PS:此文章經過作者同意刊登 並且授權可以翻譯成中文