
- 密碼學教程
- 密碼學 - 首頁
- 密碼學 - 起源
- 密碼學 - 歷史
- 密碼學 - 原理
- 密碼學 - 應用
- 密碼學 - 優點與缺點
- 密碼學 - 現代時代
- 密碼學 - 傳統密碼
- 密碼學 - 加密的需求
- 密碼學 - 雙重強度加密
- 密碼系統
- 密碼系統
- 密碼系統 - 元件
- 密碼系統攻擊
- 密碼系統 - 彩虹表攻擊
- 密碼系統 - 字典攻擊
- 密碼系統 - 暴力破解攻擊
- 密碼系統 - 密碼分析技術
- 密碼學型別
- 密碼系統 - 型別
- 公鑰加密
- 現代對稱金鑰加密
- 密碼學雜湊函式
- 金鑰管理
- 密碼系統 - 金鑰生成
- 密碼系統 - 金鑰儲存
- 密碼系統 - 金鑰分發
- 密碼系統 - 金鑰撤銷
- 分組密碼
- 密碼系統 - 流密碼
- 密碼學 - 分組密碼
- 密碼學 - Feistel 分組密碼
- 分組密碼操作模式
- 分組密碼操作模式
- 電子密碼本 (ECB) 模式
- 密碼分組連結 (CBC) 模式
- 密碼反饋 (CFB) 模式
- 輸出反饋 (OFB) 模式
- 計數器 (CTR) 模式
- 經典密碼
- 密碼學 - 反向密碼
- 密碼學 - 凱撒密碼
- 密碼學 - ROT13 演算法
- 密碼學 - 換位密碼
- 密碼學 - 加密換位密碼
- 密碼學 - 解密換位密碼
- 密碼學 - 乘法密碼
- 密碼學 - 仿射密碼
- 密碼學 - 簡單替換密碼
- 密碼學 - 簡單替換密碼的加密
- 密碼學 - 簡單替換密碼的解密
- 密碼學 - 維吉尼亞密碼
- 密碼學 - 實現維吉尼亞密碼
- 現代密碼
- Base64 編碼與解碼
- 密碼學 - XOR 加密
- 替換技術
- 密碼學 - 單表替換密碼
- 密碼學 - 破解單表替換密碼
- 密碼學 - 多表替換密碼
- 密碼學 - Playfair 密碼
- 密碼學 - Hill 密碼
- 多表替換密碼
- 密碼學 - 一次性密碼本密碼
- 一次性密碼本密碼的實現
- 密碼學 - 換位技術
- 密碼學 - 柵欄密碼
- 密碼學 - 列移位密碼
- 密碼學 - 隱寫術
- 對稱演算法
- 密碼學 - 資料加密
- 密碼學 - 加密演算法
- 密碼學 - 資料加密標準
- 密碼學 - 三重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 密碼
- 密碼學 - 對稱與非對稱
- 密碼學有用資源
- 密碼學 - 快速指南
- 密碼學 - 討論
密碼學 - CAST5 加密演算法
建立分組密碼系列的一般過程稱為 CAST。各個密碼的名稱包括 CAST-128 和 CAST-256。CAST 密碼演算法是本章討論的主要主題。
什麼是 CAST 加密演算法?
CAST 方法通常用於 IP 安全,指的是 Feistel 結構,它將明文分成相等的部分並執行加密。
- 它們不使用 DES 的 6*4 S 盒,而是使用更大的 8*32 S 盒。
- 它們旨在與軟體一起使用。
- 彎曲函式用作 CAST S 盒中的列。
- S 盒滿足雪崩效應的要求,該要求指出輸入的每個位元和輪金鑰的每個位元都會影響輪輸出的每個位元,並使每個給定輸出位元改變的機率正好為 50%。
什麼是 CAST5?
最流行的 CAST 密碼是 CAST-128,也稱為 CAST5。它是一種對稱金鑰分組密碼,是 GPG 和 PGF 版本的預設密碼,並用於各種產品中。它的開發人員將其免費提供給全球商業和非商業用途。
CAST5 加密技術旨在支援 40 到 128 位的金鑰大小,每次增加 8 位。這意味著可以使用 40、48、56、64、...、112、120 和 128 位的金鑰大小。

- 它是一個具有 16 輪和 64 位塊的 Feistel 密碼。
- 金鑰大小範圍為 40 位到 128 位。
- 存在八個 8*32 S 盒。在這八個盒子裡,四個用於金鑰排程,其餘四個用於加密。
- 輪金鑰為 37 位。
- F 函式將輸出分成位元組,將輸入與 32 位輪金鑰進行異或,然後將每個位元組透過單獨的 S 盒傳遞以獲得四個 32 位結果。
- 在不同的輪次中,這些結果使用不同的組合函式進行非線性混合。
- 另外五個輪金鑰位用於控制輸出的旋轉。
使用 Python 實現
為了實現 CAST5 加密演算法,我們將使用 Python 的 Crypto.Cipher 子模組,該模組用於實現各種加密技術的加密和解密。要使用此模組,我們需要首先安裝 pycryptodome 庫,它提供了各種加密演算法。
使用 Crypto.Cipher 實現 CAST5 演算法如下:
示例
from Crypto.Cipher import CAST #Encryption function def encrypt(plaintext, key): cipher = CAST.new(key, CAST.MODE_ECB) # Ensure plaintext is a multiple of 8 bytes (64 bits) if len(plaintext) % 8 != 0: plaintext += ' ' * (8 - len(plaintext) % 8) ciphertext = cipher.encrypt(plaintext.encode('utf-8')) return ciphertext.hex() #Decryption function def decrypt(ciphertext, key): cipher = CAST.new(key, CAST.MODE_ECB) decrypted = cipher.decrypt(bytes.fromhex(ciphertext)) return decrypted.decode('utf-8').rstrip() # Plaintext message: plaintext = "Hello, this is a test message for CAST5 encryption." key = b'0123456789abcdef' # 16 bytes (128 bits) key encrypted_text = encrypt(plaintext, key) print("Encrypted:", encrypted_text) decrypted_text = decrypt(encrypted_text, key) print("Decrypted:", decrypted_text)
以下是上述示例的輸出:
輸入/輸出
Encrypted: c9c8791f5b73c78e5fbf3c47c7d43be7a773cf757c98d2b35073e2a4d5f454f9c9b9bce4416016b57a1872ef1c19e3f51a778be27a17f11 Decrypted: Hello, this is a test message for CAST5 encryption.
CAST5 的優點
CAST5 具有許多優點:
- 人們認為 CAST5 是安全的。儘管它是一個較舊的演算法,但沒有多少駭客攻擊或安全漏洞。它利用 Feistel 網路結構來增強安全性。
- 對於記憶體使用和計算能力,CAST5 提供了合理的效率水平。高效的資料加密和解密使其適用於速度至關重要的場景。
- CAST5 不基於任何特定的硬體或軟體配置。由於它是在軟體中實現的,因此可以在各種作業系統和體系結構上使用而無需更改。
- CAST5 的金鑰大小範圍為 40 到 128 位,允許使用者選擇適合特定應用的安全級別。透過允許使用單個金鑰進行加密和解密,它簡化了金鑰管理。
- 可以檢視 CAST5 的詳細資訊,因為它是一個開放演算法。這使得它值得信賴,因為密碼學界可以相互檢查和審查它。
CAST5 的缺點
CAST5 也有一些侷限性和缺點:
- CAST5 支援長度範圍為 40 到 128 位的金鑰。這種靈活性允許不同的安全級別,但是 40 位的最小金鑰長度被認為不足以滿足現代加密標準。更長的金鑰提供了更強的抗暴力破解攻擊能力。
- CAST5 使用 64 位資料塊進行操作。雖然在該方法開發時這還算合理,但與具有更大塊大小的更現代的塊密碼相比,現在看來相對較小。這可能會導致安全問題,尤其是在加密大量資料時。
- 即使 CAST5 在現實中沒有被攻破,它也可能無法提供與 AES(高階加密標準)等更新的加密演算法相同的安全級別。更多的計算機算力和密碼學的進步可能會使舊方法更容易受到攻擊。
廣告