天天看點

《Python密碼學程式設計》——1.5 如何使用加密輪盤加密

本節書摘來自異步社群《python密碼學程式設計》一書中的第1章,第1.5節,作者 [美] al sweigart(斯維加特),李永倫 譯,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

首先,在紙上用英語寫下你的消息。在這個例子裡,我們将會加密這條消息:“the secret password is rosebud.”。接着,旋轉内圈,直到它的字母比對外圈的字母。值得注意的是,外圈的字母a下面有一個點。再看看外圈裡的這個點對應的内圈裡的數字,這個數字就是密鑰。

這個密鑰就是加密或解密消息的秘密所在。任何讀過這本書的人都知道凱撒加密法,就像任何讀過關于鎖的書的人都知道門鎖的工作原理。但是,就像平常的鎖和鑰匙,除非他們有密鑰,否則他們不能解鎖(也就是解密)已被加密的消息。在圖1-9中,外圈的a在内圈的數字8上,這意味着我們将會使用8這個密鑰來加密我們的消息。凱撒加密法使用的密鑰範圍是0~25。我們的例子将會使用8這個密鑰。保管好這個密鑰,任何知道這條消息使用8這個密鑰加密的人都能讀懂密文。

《Python密碼學程式設計》——1.5 如何使用加密輪盤加密

對于我們的消息裡的每個字母,我們将會找到它在外圈的位置,然後把它替換成内圈對應的字母。我們的消息的第一個字母是t(“the secret…”裡的第一個“t”),于是我們在外圈找到字母t,然後找到内圈對應的字母。這個字母是b,是以,我們總會把我們的秘密消息裡的t替換成b(如果我們使用8以外的其他密鑰,那麼明文裡的t将被替換成别的字母)。

我們的消息裡的下一個字母是h,它會變成p。字母e會變成m。當我們加密完整條消息時,這條消息會從“the secret password is rosebud.”變成“bpm amkzmb xiaaewzl qa zwamjcl.”(見圖1-10)。現在你可以把這條消息發給某人(或者給自己寫下來),沒人可以讀懂它,除非你把密鑰(數字8)告訴他們。

《Python密碼學程式設計》——1.5 如何使用加密輪盤加密

外圈上的每個字母總是加密成内圈上相同的字母。為了節約時間,在你查找“the secret…”裡的第一個t,并看到它會加密成b之後,你可以把這條消息裡的每個t都替換成b。這樣,一個字母你隻需要查找一次。