One-Time-Pad
如何解碼 OTP 消息?
首先,如果這是作為“作業轉儲”出現,我感到非常抱歉,但要澄清的是,事實並非如此。我不想要答案,我想知道如何得到答案。我的密碼學教授給了我們一個任務,他沒有解釋這個概念,他相信我們都知道怎麼做,而我絕對不知道。
問題分為兩部分:
- 消息的一次性加密
attack at dawn
是6c73d5240a948c86981bc294814d
(明文字母被編碼為 8 位 ASCII,給定的密文以十六進制寫入)attack at dusk
在同一 OTP 密鑰下消息的一次性加密是什麼?- 消息的一次性加密
attack at dusk
是6c73d5240a948c86981bc294814d
(明文字母被編碼為 8 位 ASCII,給定的密文以十六進制寫入)attack at noon
在同一 OTP 密鑰下消息的一次性加密是什麼?感謝您的任何/所有幫助
如果您知道明文和密文,那麼獲取密鑰是微不足道的。
$$ c=m \oplus k $$ 嘗試移動術語。暗示: $ m $ 和 $ k $ 可以在功能上互換(彼此改變位置),即。只有一個詞需要保密。你已經知道一個術語。我已經給你答案了。
關於解碼過程:Reid 連結的ASCII 表是一個很好的資源。或者,您可以使用線上ASCII 到十六進制編碼器來
- 獲取密文的二進製表示
- 獲取已知明文的二進製表示
然後在紙上做prodecure。一旦你明白你可以編寫一個 Python 腳本來為你完成這項工作。
只有一個術語需要保密:這就是我上面所說的,我會澄清一下,因為這種說法不准確。
你需要知道方程的任何兩項 $ x=a \oplus b $ . 解決任何其他術語。這意味著 $ a=x \oplus b $ 而且當然 $ x= b \oplus a $ . 因此,只要對手只知道一個術語(即密文),任何流密碼(或 OTP)都是安全的。