天天看点

《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。这样,一个字母你只需要查找一次。