- 密碼學教程
- 密碼學 - 首頁
- 密碼學 - 起源
- 密碼學 - 歷史
- 密碼學 - 原理
- 密碼學 - 應用
- 密碼學 - 優點與缺點
- 密碼學 - 現代
- 密碼學 - 傳統密碼
- 密碼學 - 加密的需求
- 密碼學 - 雙重強度加密
- 密碼系統
- 密碼系統
- 密碼系統 - 組成部分
- 密碼系統攻擊
- 密碼系統 - 彩虹表攻擊
- 密碼系統 - 字典攻擊
- 密碼系統 - 暴力攻擊
- 密碼系統 - 密碼分析技術
- 密碼學型別
- 密碼系統 - 型別
- 公鑰加密
- 現代對稱金鑰加密
- 密碼學雜湊函式
- 金鑰管理
- 密碼系統 - 金鑰生成
- 密碼系統 - 金鑰儲存
- 密碼系統 - 金鑰分發
- 密碼系統 - 金鑰撤銷
- 分組密碼
- 密碼系統 - 流密碼
- 密碼學 - 分組密碼
- 密碼學 - 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 vs SHA1
- 密碼學 - RSA vs DSA
- 密碼學 - RSA vs Diffie-Hellman
- 密碼學 vs 密碼學
- 密碼學 - 密碼學 vs 密碼分析
- 密碼學 - 經典 vs 量子
- 密碼學 vs 隱寫術
- 密碼學 vs 加密
- 密碼學 vs 網路安全
- 密碼學 - 流密碼 vs 分組密碼
- 密碼學 - AES vs DES 密碼
- 密碼學 - 對稱 vs 非對稱
- 密碼學有用資源
- 密碼學 - 快速指南
- 密碼學 - 討論
密碼學 - 轉置密碼
現在讓我們討論轉置密碼演算法。到目前為止我們使用的密碼都是替換密碼,其中明文中的字元被更改為其他字元、數字或符號。轉置密碼是一種附加型別的密碼。轉置密碼重新排列明文訊息中的字母,同時仍然使用它們。
轉置密碼應該很容易識別,因為字母頻率應該類似於英語,字母 a、e、i、n、o、r、s 和 t 的頻率很高。然而,轉置密碼可能難以進行密碼分析。關鍵詞策略是將密文字母重新排列成“有意義的”文字,即字母的重新排列模式包含了密碼的秘密。
例如,單詞 LAUGH 有五個不同的字母。五個不同的字母可以以 5! = 120 種方式排列,並且恰好有一種排列應該構成一個單詞。暴力攻擊將嘗試不同的字母組合,直到識別出該單詞;最多需要 120 次嘗試。利用語言模式來連線單詞片段並將其排列以構成單詞是一種更有效的策略。
在本章中,我們將看到不同型別的轉置密碼演算法、它們的工作原理以及它們以不同方式的實現。
轉置密碼是如何工作的?
正如我們上面所看到的,轉置密碼的工作原理是根據特定的模式或規則重新排列訊息中的字母。所以讓我們假設你有一條訊息“HELLO”,你想保密。我們不是更改字母本身,而是根據規則重新排列它們。
例如,讓我們假設規則是在具有特定列數的網格中寫入訊息。如果我們使用 2 列,“HELLO”將變成:
現在,我們將以不同的順序讀取給定的列,例如從左到右,從上到下。因此,加密後的訊息將是“HLOEL”。
要解密它,我們只需要知道用於重新排列字母的規則。在本例中,我們知道它是一個 2 列的網格,因此我們將字母重新排列回“HELLO”。
這就是轉置密碼工作原理的主要概念。這就像以秘密的方式玩一個重新排列字母的遊戲。
轉置密碼演算法型別
柵欄密碼 - 稱為“柵欄”密碼的轉置密碼的名稱來源於其編碼方式。柵欄密碼的明文向下寫在虛構柵欄的連續“欄”上,在底部向上移動。然後,讀出訊息的行。
路線密碼 - 路線密碼在將明文寫入給定維度的網格後,按照金鑰中給出的模式讀取明文。與柵欄密碼相比,路線密碼的金鑰要多得多。實際上,即使使用目前的科技,對於合適長度的訊息,可能的金鑰數量也可能過大。但並非所有金鑰都是平等的。路線選擇不當會導致明文的大部分內容只是被反轉——這將為密碼分析員提供關於路線的線索。
列置換密碼 - 當訊息逐列轉置時,它以特定長度的行寫出,然後再次讀取,並按不規則順序選擇列。在大多數情況下,關鍵字同時定義行寬和列排列。不規則列置換密碼中的任何空位置都保持未填充,而在標準列置換密碼中,空格用空值填充。最後,訊息按關鍵字指定的順序逐列讀出。
雙重轉置 - 攻擊單一列置換的一種方法是估計可能的列長,將訊息寫入其列中,然後搜尋可能的字謎。因此,經常使用雙重轉置來增強其強度。這裡所做的只是兩次列置換。對於兩次轉置,可以使用一個金鑰或兩個單獨的金鑰。
密斯基沃斯基轉置法 − Emile Victor Theodore Myszkowski 在 1902 年建立了一種變體的列式轉置法,但它需要一個包含重複字母的關鍵詞。通常情況下,當關鍵詞中的字母重複出現時,會被視為字母表中的下一個字母。
擾亂轉置法 − 在擾亂轉置法中,某些網格點會被空出不用,在填充明文時跳過這些點。這會擾亂規則模式,增加密碼分析師的任務難度。
格柵:格柵,或帶有切口的實際遮罩,是一種不同型別的轉置密碼,它不依賴於數學公式。通訊雙方必須保持物理金鑰的機密性,才能實現高度不規則的轉置,這種轉置的持續時間由格柵的大小決定。
檢測和密碼分析 − 密碼分析師可以使用頻率計數來快速識別基本的轉置密碼,因為它不會影響單個符號的頻率。如果密文的頻率分佈與明文的頻率分佈匹配,則很可能是一種轉置密碼。一種常見的攻擊方法是字母改組,它涉及到移動密文的部分內容,尋找看起來像是英語單詞的字母組合,然後解決這些字母組合。一旦找到這樣的字母組合,就可以擴充套件它們,因為它們提供了關於轉置模式的資訊。
組合 − 轉置法經常與其他方法結合使用。例如,可以透過將列式轉置與簡單的替換密碼結合起來來避免兩者的弱點。由於轉置的存在,當高頻密文字母被替換為高頻明文字母時,明文的部分內容仍然隱藏起來。這種替換使得無法對轉置進行字母改組翻譯。這種方法與分餾法結合使用時非常有效。
分餾法 − 當使用分餾法時,轉置法可以很好地工作,分餾法是一個預先的步驟,它將每個明文字元分成多個密文字元。例如,可以將明文字母表在一個網格中打出來,然後用每個字母在訊息中的座標來替換它。另一種分餾訊息的方法是簡單地將訊息翻譯成摩爾斯電碼,摩爾斯電碼使用點、劃和空格符號。
使用 Python 實現
此實現向您展示瞭如何使用 Python 中給定的金鑰對訊息進行加密和解密。這是這種密碼學的非常基本的實現。程式碼中使用的金鑰顯示了加密和解密網格的行數。
示例
以下是使用 Python 的轉置密碼的基本實現。請檢查下面的程式碼 −
def transposition_encrypt(message, key):
# Create an empty grid
grid = [''] * key
# Fill the grid with the message
for i, char in enumerate(message):
row = i % key
grid[row] += char
# Join the rows together
encrypted_msg = ''.join(grid)
return encrypted_msg
def transposition_decrypt(encrypted_msg, key):
# Calculate the number of columns
cols = len(encrypted_msg) // key
# Create an empty grid
grid = [''] * key
# Fill the grid
for i in range(cols):
for j in range(key):
grid[j] += encrypted_msg[i * key + j]
# Join the columns
decrypted_msg = ''.join(grid)
return decrypted_msg
# function execution
message = "HI THIS IS RIYA"
key = 2
encrypted_msg = transposition_encrypt(message, key)
print("The Encrypted message:", encrypted_msg)
decrypted_msg = transposition_decrypt(encrypted_msg, key)
print("The Decrypted message:", decrypted_msg)
以下是上述示例的輸出 −
輸入/輸出
Encrypted message: H HSI IAITI SRY Decrypted message: HHIIIIS S AT R
轉置密碼的特性
以下是轉置密碼的一些特定特性 −
轉置密碼很容易被破解,因為它只重新排列字母,而不是改變它們。
還有其他重新排列字母的方法,例如將它們寫在網格中或將它們移到特定距離。
要解碼訊息,我們必須理解應用於字母重新排列的演算法或模式。
缺點
正如我們所看到的,與其他一些加密方法相比,轉置密碼並不十分安全。原因如下 −
此技術只改變字母的順序,這意味著駭客很容易找出模式並解密訊息。
由於我們不改變字母,因此可以找出字母的頻率並猜測用於重新排列它們的模式。
轉置密碼的安全性主要依賴於保持重新排列字母的方法的秘密。如果模式或規則已知,則可以輕鬆解密訊息。
它不適用於大型訊息,因為重新排列過程可能非常耗時。
總而言之,轉置密碼簡單易用,但其簡單性使其在保護敏感資料方面安全性較低。
總結
在本章中,我們學習了轉置密碼,其工作機制、特性、缺點以及在 Python 中的基本實現。在接下來的章節中,我們將學習轉置密碼的加密和解密演算法。