- 密碼學教程
- 密碼學 - 首頁
- 密碼學 - 起源
- 密碼學 - 歷史
- 密碼學 - 原理
- 密碼學 - 應用
- 密碼學 - 優點與缺點
- 密碼學 - 現代
- 密碼學 - 傳統密碼
- 密碼學 - 加密的需求
- 密碼學 - 雙重強度加密
- 密碼系統
- 密碼系統
- 密碼系統 - 元件
- 密碼系統的攻擊
- 密碼系統 - 彩虹表攻擊
- 密碼系統 - 字典攻擊
- 密碼系統 - 暴力破解攻擊
- 密碼系統 - 密碼分析技術
- 密碼學的型別
- 密碼系統 - 型別
- 公鑰加密
- 現代對稱金鑰加密
- 密碼學雜湊函式
- 金鑰管理
- 密碼系統 - 金鑰生成
- 密碼系統 - 金鑰儲存
- 密碼系統 - 金鑰分發
- 密碼系統 - 金鑰撤銷
- 分組密碼
- 密碼系統 - 流密碼
- 密碼學 - 分組密碼
- 密碼學 - 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 密碼
- 密碼學 - 對稱與非對稱
- 密碼學有用資源
- 密碼學 - 快速指南
- 密碼學 - 討論
密碼學 - 簡單替換密碼
如果您正在尋找一種簡單且廣泛使用的密碼,則簡單替換密碼是絕佳的選擇。在這個密碼中,我們將學習簡單替換密碼到底是什麼以及它如何以非常簡單的方式工作。因此,基本上,在這種技術中,我們可以用相應的密文字元替換每個明文字元。與凱撒密碼演算法不同,簡單替換密碼會更改字母的順序,因此此過程為加密過程增加了額外的複雜性。
替換密碼是一種編碼技術,其中密文替換預定義系統中的明文單元。 “單元”可以是單個字母(最常見)、字母對、字母三元組或上述組合。透過使用逆替換,接收者解密文字。在替換密碼中,我們用不同的字母替換明文字母。
加密訊息 - 加密訊息需要兩個要素:金鑰(字母替換)和加密技術(在本例中為簡單替換)。請注意,如果我們認為我們的訊息不再安全,我們應該繼續使用相同的技術(簡單替換),但更改金鑰(使用替代字母替換)。
解密訊息 - 如果你知道金鑰,這應該不是問題。無論密文字元按字母順序排列是否有幫助,金鑰對於加密和解密都是相同的。
例如,如果偏移量為 2,則 A 將被替換為 c,B 將變為 D,C 變為 E,依此類推。
它是如何工作的?
首先,我們必須確定字母表中哪個字母將替換每個給定的原始字母。
因此,要使用簡單替換密碼加密訊息,我們必須用給定秘密字元對映中的相應字元替換訊息中的每個字元。例如,如果“A”對映到“D”,則訊息中的每個“A”都應替換為“D”,依此類推,對於每個字元。
要解密給定的編碼訊息,我們必須反轉加密過程。因此,我們將使用秘密字母對映將每個編碼字母替換為其原始字母。
秘密字母對映是密碼的關鍵。如果不瞭解此對映,則很難解密訊息。
示例
簡單替換密碼的金鑰基本上包含 26 個字母。一個示例金鑰為 -
| 明文字母表 | abcdefghijklmnopqrstuvwxyz |
| 密文字母表 | phqgiumeaylnofdxjkrcvstzwb |
使用上述金鑰的示例加密為 -
| 明文 | hello, this world is so beautiful! |
| 密文 | gtyyj, ngzf cjpyk zf fj htvbnzdby! |
使用 Python 實現
因此,我們藉助 Python 的字串和隨機模組實現了簡單的替換密碼。
字串模組用於獲取所有小寫字母 (string.ascii_lowercase),而隨機模組用於隨機排列字母表。我們生成了字母表中字母的隨機對映,藉助給定的對映加密訊息,並藉助對映解密加密的訊息。
示例
以下是使用 Python 的字串和隨機模組的簡單替換密碼演算法的 Python 實現。請參見下面的程式 -
import string
import random
def generate_mapping():
alphabet = list(string.ascii_lowercase) # Get all lowercase letters
shuffled_alphabet = alphabet[:] # Make a copy of the alphabet
random.shuffle(shuffled_alphabet) # Shuffle the copy
return dict(zip(alphabet, shuffled_alphabet))
# function for encryption
def encrypt(message, mapping):
encrypted_message = ''
for char in message.lower():
if char in mapping:
encrypted_message += mapping[char]
else:
encrypted_message += char
return encrypted_message
# function for decryption
def decrypt(encrypted_message, mapping):
inverse_mapping = {v: k for k, v in mapping.items()} # Create an inverse mapping
decrypted_message = ''
for char in encrypted_message.lower():
if char in inverse_mapping:
decrypted_message += inverse_mapping[char]
else:
decrypted_message += char
return decrypted_message
# generate a random mapping
mapping = generate_mapping()
# message to encrypt
message = "Hello, world!"
# encrypt the message
encrypted_message = encrypt(message, mapping)
print("Our Encrypted Message:", encrypted_message)
# eecrypt the message
decrypted_message = decrypt(encrypted_message, mapping)
print("Our Decrypted Message:", decrypted_message)
以下是上述示例的輸出 -
輸入/輸出
Our Encrypted Message: nsgga, taigj! Our Decrypted Message: hello, world!
缺點
此密碼的基本缺點是它很容易破解。一旦攻擊者發現用於替換字母的對映,他就可以輕鬆解碼任何訊息。
它也可以使用頻率分析來破解。當您檢視加密訊息中某些字母或字母組出現的頻率時,更容易猜測它。這意味著簡單替換密碼對於保護我們的私人資料並不是非常安全。
簡單替換密碼的密碼分析
簡單替換密碼的密碼分析是指解密秘密訊息,該訊息是一種程式碼,其中一個字母通常被替換為另一個字母。我們可以透過將程式碼的字母頻率與已知的語言字母頻率進行比較來對其進行解密。使用標點符號和空格等指示,以及一些典型模式,我們可以逐步解密訊息。這與透過猜測哪些元素代表來解決難題相同,具體取決於它們出現的頻率。
總結
在本章中,我們學習了簡單替換密碼及其在不同程式語言中的簡單實現。替換密碼非常易於理解和使用,但在安全性方面,它並不安全。其背後的原因是它的簡單性:一旦攻擊者破解了對映,他就可以輕鬆地解密任何訊息。用於破解這些密碼的技術之一是頻率分析。因此,不建議在需要強安全性的情況下使用它。