
- 密碼學教程
- 密碼學 - 首頁
- 密碼學 - 起源
- 密碼學 - 歷史
- 密碼學 - 原理
- 密碼學 - 應用
- 密碼學 - 優點與缺點
- 密碼學 - 現代
- 密碼學 - 傳統密碼
- 密碼學 - 加密的需求
- 密碼學 - 雙重強度加密
- 密碼系統
- 密碼系統
- 密碼系統 - 元件
- 密碼系統的攻擊
- 密碼系統 - 彩虹表攻擊
- 密碼系統 - 字典攻擊
- 密碼系統 - 暴力破解攻擊
- 密碼系統 - 密碼分析技術
- 密碼學的型別
- 密碼系統 - 型別
- 公鑰加密
- 現代對稱金鑰加密
- 密碼學雜湊函式
- 金鑰管理
- 密碼系統 - 金鑰生成
- 密碼系統 - 金鑰儲存
- 密碼系統 - 金鑰分發
- 密碼系統 - 金鑰撤銷
- 分組密碼
- 密碼系統 - 流密碼
- 密碼學 - 分組密碼
- 密碼學 - Feistel 分組密碼
- 分組密碼的工作模式
- 分組密碼的工作模式
- 電子密碼本 (ECB) 模式
- 密碼分組連結 (CBC) 模式
- 密碼反饋 (CFB) 模式
- 輸出反饋 (OFB) 模式
- 計數器 (CTR) 模式
- 經典密碼
- 密碼學 - 反向密碼
- 密碼學 - 凱撒密碼
- 密碼學 - ROT13 演算法
- 密碼學 - 換位密碼
- 密碼學 - 加密換位密碼
- 密碼學 - 解密換位密碼
- 密碼學 - 乘法密碼
- 密碼學 - 仿射密碼
- 密碼學 - 簡單替換密碼
- 密碼學 - 簡單替換密碼的加密
- 密碼學 - 簡單替換密碼的解密
- 密碼學 - 維吉尼亞密碼
- 密碼學 - 維吉尼亞密碼的實現
- 現代密碼
- Base64 編碼與解碼
- 密碼學 - XOR 加密
- 替換技術
- 密碼學 - 單字母替換密碼
- 密碼學 - 單字母替換密碼的破解
- 密碼學 - 多字母替換密碼
- 密碼學 - Playfair 密碼
- 密碼學 - 希爾密碼
- 多字母替換密碼
- 密碼學 - 一次性密碼本
- 一次性密碼本的實現
- 密碼學 - 換位技術
- 密碼學 - 柵欄密碼
- 密碼學 - 列移位換位
- 密碼學 -隱寫術
- 對稱演算法
- 密碼學 - 資料加密
- 密碼學 - 加密演算法
- 密碼學 - 資料加密標準
- 密碼學 - 三重 DES
- 密碼學 - 雙重 DES
- 高階加密標準
- 密碼學 - AES 結構
- 密碼學 - AES 變換函式
- 密碼學 - 位元組替換變換
- 密碼學 - 行移位變換
- 密碼學 - 列混合變換
- 密碼學 - 輪金鑰加變換
- 密碼學 - AES 金鑰擴充套件演算法
- 密碼學 - Blowfish 演算法
- 密碼學 - SHA 演算法
- 密碼學 - RC4 演算法
- 密碼學 - Camellia 加密演算法
- 密碼學 - ChaCha20 加密演算法
- 密碼學 - CAST5 加密演算法
- 密碼學 - SEED 加密演算法
- 密碼學 - SM4 加密演算法
- IDEA - 國際資料加密演算法
- 公鑰(非對稱)密碼學演算法
- 密碼學 - RSA 演算法
- 密碼學 - RSA 加密
- 密碼學 - RSA 解密
- 密碼學 - 建立 RSA 金鑰
- 密碼學 - 破解 RSA 密碼
- 密碼學 - ECDSA 演算法
- 密碼學 - DSA 演算法
- 密碼學 - Diffie-Hellman 演算法
- 密碼學中的資料完整性
- 密碼學中的資料完整性
- 訊息認證
- 密碼學數字簽名
- 公鑰基礎設施
- 雜湊
- MD5(訊息摘要演算法 5)
- SHA-1(安全雜湊演算法 1)
- SHA-256(安全雜湊演算法 256 位)
- SHA-512(安全雜湊演算法 512 位)
- SHA-3(安全雜湊演算法 3)
- 雜湊密碼
- Bcrypt 雜湊模組
- 現代密碼學
- 量子密碼學
- 後量子密碼學
- 密碼學協議
- 密碼學 - SSL/TLS 協議
- 密碼學 - SSH 協議
- 密碼學 - IPsec 協議
- 密碼學 - PGP 協議
- 影像與檔案加密
- 密碼學 - 影像
- 密碼學 - 檔案
- 隱寫術 - 影像
- 檔案加密和解密
- 密碼學 - 檔案加密
- 密碼學 - 檔案解密
- 物聯網中的密碼學
- 物聯網安全挑戰、威脅和攻擊
- 物聯網安全的加密技術
- 物聯網裝置的通訊協議
- 常用密碼學技術
- 自定義構建密碼學演算法(混合密碼學)
- 雲密碼學
- 量子密碼學
- 密碼學中的影像隱寫術
- DNA 密碼學
- 密碼學中的一次性密碼 (OTP) 演算法
- 之間的區別
- 密碼學 - MD5 與 SHA1
- 密碼學 - RSA 與 DSA
- 密碼學 - RSA 與 Diffie-Hellman
- 密碼學與密碼學
- 密碼學 - 密碼學與密碼分析
- 密碼學 - 經典與量子
- 密碼學與隱寫術
- 密碼學與加密
- 密碼學與網路安全
- 密碼學 - 流密碼與分組密碼
- 密碼學 - AES 與 DES 密碼
- 密碼學 - 對稱與非對稱
- 密碼學有用資源
- 密碼學 - 快速指南
- 密碼學 - 討論
密碼學 - AES 結構
AES 由一系列連結操作組成,其中一些操作涉及用特定輸出替換輸入(替換),另一些操作則涉及重新排列位(置換)。
有趣的是,AES 所有計算都在位元組而不是位上進行。因此,AES 將明文塊的 128 位視為 16 個位元組。這 16 個位元組被排列成四列四行,以矩陣形式進行處理。
與 DES 不同,AES 中的輪數是可變的,並且取決於金鑰的長度。AES 對 128 位金鑰使用 10 輪,對 192 位金鑰使用 12 輪,對 256 位金鑰使用 14 輪。每一輪都使用不同的 128 位輪金鑰,該金鑰根據原始 AES 金鑰計算得出。
AES 結構示意圖如下所示:

密碼需要 128 位或 16 位元組的明文塊大小。金鑰長度可以是 16、24 或 32 位元組(128、192 或 256 位)。根據金鑰長度,演算法的名稱為 AES-128、AES-192 或 AES-256。
單個 128 位塊作為加密和解密過程的輸入。在 FIPS PUB 197 中,此塊表示為 4 * 4 的位元組方陣。在加密或解密的每個步驟中,此塊都會被複制到 State 陣列中,並更新該陣列。在最後階段之後,輸出矩陣包含當前狀態的副本。
加密過程
這裡,我們僅限於描述 AES 加密的典型輪次。每一輪都包含四個子過程。第一輪過程如下圖所示:

金鑰擴充套件
輪金鑰使用 Rijndael 的分組密碼排程表根據密碼金鑰計算得出。
預變換
這僅包含一個過程,即 Add_Round_Key。這裡,對每個資料位元組與輪金鑰的一個位元組執行 XOR 運算。
位元組替換 (SubBytes)
透過查詢設計中給出的固定表 (S-box) 來替換 16 個輸入位元組。結果是四行四列的矩陣。
行移位
矩陣的四行中的每一行都向左移動。任何“掉落”的條目都重新插入到行的右側。移位如下進行:
- 第一行不移位。
- 第二行向左移動一個(位元組)位置。
- 第三行向左移動兩個位置。
- 第四行向左移動三個位置。
- 結果是一個新的矩陣,它包含相同的 16 個位元組,但彼此之間發生了移位。
列混合
現在使用特殊的數學函式轉換四位元組的每一列。此函式以一列的四個位元組作為輸入,並輸出四個全新的位元組,這些位元組替換原始列。結果是另一個新的矩陣,包含 16 個新位元組。需要注意的是,在最後一輪中不執行此步驟。
輪金鑰加
矩陣的 16 個位元組現在被視為 128 位,並與輪金鑰的 128 位進行異或。如果這是最後一輪,則輸出為密文。否則,將生成的 128 位解釋為 16 個位元組,然後我們開始另一輪類似的輪次。
解密過程
AES 密文的解密過程類似於加密過程,但順序相反。每一輪都包含四個以相反順序進行的過程:
- 輪金鑰加
- 列混合
- 行移位
- 位元組替換
由於每一輪中的子過程都是相反的,因此與 Feistel 密碼不同,加密和解密演算法需要單獨實現,儘管它們密切相關。