關於單字母替換的問題
問題: 密碼流使用簡單的單字母替換技術對 6 位字元的數據流進行操作。估計並解釋可能的不同替換字母的數量。關鍵實際上是替換字母表,可以表示為 $ 384 $ -位數(即 $ 64×6 $ 位)。
與 DES/3DES 和一次性密碼器相比,討論該系統的安全性,為您的結論提供充分的理由。
這是一個過去的考試問題,我正在努力解決。我不是安全專家,也不打算朝著這個方向發展。該模組是我的理學碩士課程的一部分,與我的職業無關。
答案(我到目前為止):
不同替換字母的數量是 $ 26! $ (階乘),假設使用英文字母。還假設字母可以在任何位置並且不能重複。
- 為什麼key突然表示為a $ 384 $ -位數?我不明白。為什麼 $ 64·6 $ ?
- 我們沒有 $ 64 $ 我們的字母表中的字元…如果英文字母表中的每個字元都用 $ 6 $ 位,那麼它應該是 $ 6·26=156 $ 位。正確的?
- 現在我在想如果問題說 $ 64 $ ,也許字母表是自定義的(比如包括大寫字母和一些數字+字元),所以排列的數量是 $ 64! $ (階乘)。它是否正確?
- 這把鑰匙是什麼樣子的(或這種鑰匙的一個例子)?
我理解用一個關鍵字替換鍵。例如:
abcdefghijklmnopqrstuvwxyz
hatredbcfgijklmnopqsuvwxyz
- 你能幫我確定替換字母鍵應該是什麼樣子嗎?
- 我去了維基百科的頁面六位字元程式碼,變得更加困惑。這個連結甚至相關嗎?
我會欣賞例子而不是答案。謝謝你。如果您覺得我的問題太長,請忽略與其他加密系統比較的部分。
他們為密鑰提出的格式似乎是某種位壓縮數組。首先,使用 6 位,有 64 個可能的值 (0-63)。現在,假設您有如下替換規則(您的密鑰):
0 -> 17
1 -> 43
2 -> 12
…
63 -> 8
這意味著:加密時,將所有出現的值替換為
0
,將17
所有1
s 替換43
為 等。這些值可能對應於字母,但此時不是必需的。由於映射表左側的數字是連續的,因此寫入此鍵的另一種形式是 $ 17,43,12,…,8 $ . 這可以很容易地轉換為更詳細的初始版本。列表中的每個數字需要 6 位來表示(因為它也必須是 $ <64 $ ),其中有 64 個,因此儲存密鑰的總位數為 $ 64*6=384 $ .在某種程度上,這個密鑰大小是騙人的。大小鍵 $ l $ 位通常意味著有 $ 2^l $ 鑰匙的可能性。在這裡,您使用階乘是正確的。只有 $ 64!\approx 2^{296} $ 可能的鍵。要理解為什麼會這樣,想想如果發送了密鑰,但最後一個 6 位數字被遺漏了會發生什麼。我們可以通過查看尚未使用的值來確定它是哪一個。即使省略最後兩個 6 位數字,密鑰也只有兩種可能性 ( $ a,b $ 或者 $ b,a $ )。很明顯,發送 384 位意味著我們發送的比我們嚴格需要的多。
6 位字元程式碼只是將算法使用的這些 6 位數字轉換為對人類有用的字元的一種可能方式。