- 密碼學教程
- 密碼學 - 首頁
- 密碼學 - 起源
- 密碼學 - 歷史
- 密碼學 - 原理
- 密碼學 - 應用
- 密碼學 - 優點與缺點
- 密碼學 - 現代
- 密碼學 - 傳統密碼
- 密碼學 - 加密的需求
- 密碼學 - 雙重強度加密
- 密碼系統
- 密碼系統
- 密碼系統 - 組成部分
- 密碼系統攻擊
- 密碼系統 - 彩虹表攻擊
- 密碼系統 - 字典攻擊
- 密碼系統 - 暴力破解攻擊
- 密碼系統 - 密碼分析技術
- 密碼學型別
- 密碼系統 - 型別
- 公鑰加密
- 現代對稱金鑰加密
- 密碼學雜湊函式
- 金鑰管理
- 密碼系統 - 金鑰生成
- 密碼系統 - 金鑰儲存
- 密碼系統 - 金鑰分發
- 密碼系統 - 金鑰吊銷
- 分組密碼
- 密碼系統 - 流密碼
- 密碼學 - 分組密碼
- 密碼學 - Feistel 分組密碼
- 分組密碼的工作模式
- 分組密碼的工作模式
- 電子密碼本 (ECB) 模式
- 密碼分組連結 (CBC) 模式
- 密碼反饋 (CFB) 模式
- 輸出反饋 (OFB) 模式
- 計數器 (CTR) 模式
- 經典密碼
- 密碼學 - 反向密碼
- 密碼學 - 凱撒密碼
- 密碼學 - ROT13 演算法
- 密碼學 - 置換密碼
- 密碼學 - 加密置換密碼
- 密碼學 - 解密置換密碼
- 密碼學 - 乘法密碼
- 密碼學 - 仿射密碼
- 密碼學 - 簡單替換密碼
- 密碼學 - 簡單替換密碼加密
- 密碼學 - 簡單替換密碼解密
- 密碼學 - 維吉尼亞密碼
- 密碼學 - 維吉尼亞密碼的實現
- 現代密碼
- Base64 編碼與解碼
- 密碼學 - XOR 加密
- 替換技術
- 密碼學 - 單字母替換密碼
- 密碼學 - 單字母替換密碼的破解
- 密碼學 - 多字母替換密碼
- 密碼學 - Playfair 密碼
- 密碼學 - Hill 密碼
- 多字母替換密碼
- 密碼學 - 一次性密碼本
- 一次性密碼本的實現
- 密碼學 - 置換技術
- 密碼學 - 柵欄密碼
- 密碼學 - 列置換密碼
- 密碼學 - 密碼隱寫術
- 對稱演算法
- 密碼學 - 資料加密
- 密碼學 - 加密演算法
- 密碼學 - 資料加密標準 (DES)
- 密碼學 - 三重 DES
- 密碼學 - 雙重 DES
- 高階加密標準 (AES)
- 密碼學 - AES 結構
- 密碼學 - AES 變換函式
- 密碼學 - 位元組替換變換
- 密碼學 - 行移位變換
- 密碼學 - 列混淆變換
- 密碼學 - 輪金鑰加變換
- 密碼學 - AES 金鑰擴充套件演算法
- 密碼學 - Blowfish 演算法
- 密碼學 - SHA 演算法
- 密碼學 - RC4 演算法
- 密碼學 - Camellia 加密演算法
- 密碼學 - ChaCha20 加密演算法
- 密碼學 - CAST5 加密演算法
- 密碼學 - SEED 加密演算法
- 密碼學 - SM4 加密演算法
- IDEA - 國際資料加密演算法
- 公鑰(非對稱)密碼演算法
- 密碼學 - RSA 演算法
- 密碼學 - RSA 加密
- 密碼學 - RSA 解密
- 密碼學 - 建立 RSA 金鑰
- 密碼學 - 破解 RSA 密碼
- 密碼學 - ECDSA 演算法
- 密碼學 - DSA 演算法
- 密碼學 - Diffie-Hellman 演算法
- 密碼學中的資料完整性
- 密碼學中的資料完整性
- 訊息認證
- 密碼學數字簽名
- 公鑰基礎設施 (PKI)
- 雜湊演算法
- 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 密碼
- 密碼學 - 對稱與非對稱
- 密碼學有用資源
- 密碼學 - 快速指南
- 密碼學 - 討論
密碼學 - Blowfish 演算法
Blowfish 加密是一種對稱金鑰分組密碼,常用於密碼雜湊、VPN 和檔案加密。自 1993 年推出以來,由於其高效的加密和解密操作,這種加密方法獲得了普及。但是,最近出現更安全、更先進的演算法,例如 AES,正在逐漸取代 Blowfish。
Blowfish 是一種 64 位分組密碼,使用對稱加密和金鑰長度最長可達 448 位。它由 Bruce Schneier 於 1993 年建立,旨在取代過時的 DES(資料加密標準)和 IDEA(國際資料加密演算法)加密方法。
雖然其普及度最近有所下降,但 Blowfish 以其易用性和效率而聞名。它正在被更新、更強大的加密方法(如高階加密標準 (AES))所取代。
Blowfish 的特點
Blowfish 演算法的一些主要特點如下:
- 分組密碼 - Blowfish 使用對稱金鑰的分組密碼技術加密資料,產生 64 位的分組加密。
- 對稱金鑰演算法 - Blowfish 使用相同的對稱加密金鑰對資料進行加密和解密。
- 不同的金鑰長度 - Blowfish 提供從 32 位到 448 位不等的金鑰長度。金鑰越長,資料越安全。但是,處理更長的金鑰通常需要更多資源和時間。
- Feistel 密碼 - Feistel 密碼結構將明文分成兩半,並使用一系列數學運算獨立地對每一半進行混淆。
Blowfish 的工作原理
Blowfish 使用 SP 網路;必須先初始化替換盒 (S-box) 和置換盒 (P-box)。有四個 32 位 S-盒,每個有 256 個條目,以及八個 32 位子金鑰的 P 陣列。
- 步驟 1 - 首先,我們將 64 位明文分成兩個相等的塊 L 和 R,每個包含 32 位。
- 步驟 2 - 我們在接下來的步驟中開始的 16 個加密迴圈中的每一個都執行以下操作:
- 現在,將 L 與 P 陣列的第一個成員 (P1) 進行異或運算。
- 然後將 R 與 F 進行異或運算,其中 F 是 L 的函式,並使用構成 S-盒的四個塊。以下是 F 函式的完整總結。
- L 和 R 交換後,迴圈的下一個迭代開始。
- 步驟 3 - 迴圈完成後,再次交換 L 和 R。
- 步驟 4 - 將 R 與 P17 進行異或運算,將 L 與 P18 進行異或運算,以獲得最終兩個未使用的 P-盒條目 (P17 & P18)。
- 步驟 5:最後一步將 L 和 R 組合起來得到密文。
Blowfish 加密
Blowfish 是一種對稱金鑰分組密碼,它使用相同的金鑰對資料進行加密和解密。Blowfish 速度快、效率高,主要是因為它比其他密碼方法更簡單。雖然在達到最高級別的資料安全方面存在一些可能的風險,但這些風險不容忽視。
以下是 Blowfish 加密技術的詳細描述:
- 金鑰擴充套件 - Blowfish 使用的初始元件是秘密金鑰,其長度可以在 32 位到 448 位之間。然後使用 P 陣列和 S-盒預計算生成並擴充套件加密金鑰以生成多個子金鑰。
- 子金鑰生成 - 定義擴充套件金鑰的 64 位塊被分成兩個 32 位塊。這些元件與一些預定值結合起來,建立一組新的子金鑰。
- 資料加密 - 這就是令人興奮的部分開始的地方。這兩個 32 位段被加密十六次。每一輪都涉及一組複雜的置換和替換(異或運算、加法和 S-盒查詢)。
- 處理後 - 經過 16 輪後,重建 32 位亂序位以形成 64 位密文塊。
Blowfish 解密
在 Blowfish 中,解密是透過反轉加密過程來執行的。因此,所有內容都會反轉,直到密文轉換回明文。
這種 Blowfish 加密方法使用您的私鑰來保護您的資料。Blowfish 最好的一點是,如果材料被加密,如果沒有原始金鑰,則很難解密它。但是,這些 90 年代的技術正在逐漸過時,因為更復雜、更安全的加密方法,如 AES 或 Twofish(Blowfish 的替代品),正在取代它們。
示例
假設將單詞“Hi world”使用 Blowfish 加密。所涉及的步驟如下:
- 輸入“Hi world”最初由 64 位或 8 個位元組組成,包括七個字母和一個空格。
- 輸入由 32 位組成。“Hi w”的左 32 位與 P1 進行異或運算以產生 P1,即金鑰擴充套件的結果。
- 之後,P1 將 32 位分成 4 個位元組,並使用轉換函式 F(F In)將它們傳送到四個 S-盒中的每一個。
- 第三個 S-盒中的第三個值與前兩個 S-盒中的前兩個值的總和進行異或運算。
- 將此結果新增到第四個 S-盒的輸出時,會產生 32 位輸出。
- 為了建立輸出 F1',將 F In 的輸出與輸入訊息“orld”的正確 32 位進行異或運算。
- 然後用 F1' 替換訊息的左半部分,用 P1' 替換右半部分。
- 對於總共 16 輪,將對每個後續的 P-陣列成員執行相同的過程。
- 16 輪後,將最終兩個 P-陣列元素 P17 和 P18 與輸出 P16' 和 F16' 進行異或運算。之後,再次將它們組合起來建立輸入訊息的 64 位密文。
Blowfish 的優點
Blowfish 是當前使用的最快分組密碼之一。它使用對稱加密金鑰對資料進行加密以建立密文。Blowfish 在建立三十多年後仍然需求量很大,因為它提供了以下好處:
- 比DES和IDEA演算法更省時有效。
- 無需授權,任何人都可以免費使用。
- 大型微處理器即使在加密前的複雜初始化步驟下,也能高效地處理資料加密過程。
- 為用Java開發的程式和應用提供高水平的安全保障。
- 允許安全的使用者身份驗證以進行遠端訪問,併為備份工具提供安全訪問。
Blowfish的缺點
使用Blowfish加密有一些缺點,包括:
- 更改金鑰會改變速度。
- 完成主要例程需要很長時間。
- 由於其64位短塊大小,該技術容易受到生日攻擊(一種蠻力攻擊)的影響。
- 每個新金鑰的預處理需要4 KB的文字,這會降低其速度,並使其無法用於各種用途。