One-Time-Pad
為什麼在一次性填充加密中需要進行 mod 計算?
考慮到要加密的英文字母,為什麼在將填充添加到純文字後需要計算 mod 26。僅僅是它增加了另一個加密級別,還是使用它使得兩個字母可能最終在密碼中具有相同的符號?3 mod 26 是 3,而 29 mod 26 是 3。
有兩個主要原因。
首先,當我們使用對稱算法加密數據時,我們通常希望每個單元加密或解密為相同大小的單元(忽略填充和 MAC)。在您的情況下,當我們使用英文字母時,我們也希望得到英文字母,而不是一組隨機數。類似地,當我們加密一個字節時,我們也想取出一個字節,因為電腦通常處理字節並且以這種方式處理它們是最方便的。
其次,更重要的是,這裡不使用模運算會洩漏有關數據的資訊,有時會洩漏很多資訊。例如,如果我們使用 0-25 範圍來表示我們的字母,如果我們看到 0 作為加密輸出,我們知道填充和輸入都是 0,如果我們看到 50,我們知道兩者pad 和 input 是 25。類似地,49 告訴我們所涉及的兩個數字按某種順序分別是 24 和 25。通過這種類型的資訊和統計分析,我們可能可以解密密文。
然而,如果我們使用模運算,那麼輸出值不會告訴我們任何關於焊盤或輸入的資訊,因為每個輸出值都是同樣可能的。如果墊子真的是隨機的並且只使用一次,那麼它提供了完美的保密性。