Keys
為什麼替換密碼的密鑰空間不是 2^26 而是 2^88
已知密碼具有密碼算法的密鑰空間,其密鑰長度為 $ n $ 是(誰)給的 $ 2^n $ ,但替換密碼的密鑰空間是 $ 2^{88} $ 這是一個近似值 $ 26! $ . (我正在考慮 26 個字母的字母表)
假設密鑰長度是 26(它應該是字母表)為什麼不是 $ 2^{26} $ ?
密鑰長度為的密碼算法的密鑰空間 $ n $ 是(誰)給的 $ 2^n $
不,有以下混淆:
- 鍵空間(或鍵空間) $ \mathcal K $ ,這是一組可能的鍵。
- 鍵空間大小(或鍵空間的大小) $ |\mathcal K| $ ,這是可能的鍵的數量(整數)。
- 密鑰長度(或密鑰大小),以位為單位,可以定義為密鑰空間大小的以 2 為底的對數(不一定是整數)。如果我們注意到 $ k $ 對於以位為單位的密鑰長度,密鑰空間 $ \mathcal K $ 有 $ |\mathcal K|=2^k $ 鍵,和 $ k=\log_2(|\mathcal K|) $ .
- 用於表示鍵**的符號數。**如果鍵表示為 $ n $ 每個人都可以接受的符號 $ s $ 值,那麼 $ |\mathcal K|\le s^n $ 和 $ k\le n\log_2(s) $ . 當所有符號組合產生有效密鑰(這在現代對稱密碼中很典型)時,這些不等式就變成了等式。
這是一個輕微的簡化:通常,並且總是當在密鑰之前添加有效時,等效密鑰(即對解密產生相同效果的密鑰)被聚合併計為一個。然而,這種區別對於單字母替換密碼沒有用。
在 26 個字母的單字母替換密碼中,密鑰表示為每個明文字母按字母順序排列的密文字母列表:
- 鍵空間是集合 $ \mathcal K $ 字母表的所有排列。
- 鍵空間大小是該集合中元素的數量,即整數 $ |\mathcal K|=26!=403291461126605635584000000 $ .
這是因為明文字母A
可以對應26個密文字母中的任何一個,明文字母B
可以對應25個密文字母以外的任何一個明文字母A
,明文字母C
可以對應24個密文字母以外的任何一個明文字母A
或B
,依此類推,直到明文字母Y
對應2個可能的密文字母,並Z
對應剩下的一個密文字母。- 以位為單位的密鑰長度是它的以 2 為底的對數: $ k=\log_2(26!)=\log(26!)/\log(2)\approx88.38 $ 少量。
- 鍵中的符號數為 $ n=26 $ , 和 $ s=26 $ 可能的符號。
假設密鑰長度為26,為什麼(密鑰空間大小)不是 $ 2^{26} $ ?
那 $ 2^{26} $ 似乎建為 $ 2^n $ , 在哪裡 $ n $ 是符號的數量(不是密鑰長度),當 $ 2 $ 將是單個位所取的可能值的數量。差異使 $ 2^{26} $ 無關的。
一個相關的數字是 $ s^n=26^{26}=6156119580207157310796674288400203776=2^{\approx122.21} $ :這是字元串的數量 $ n=26 $ 每個選擇的字元 $ s=26 $ 人物。但這比密鑰空間大得多,因為單字母替換密碼的密鑰必須使用不同的字母(否則解密會不明確)。