PythonChallenge 1:恺撒密码的解码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PythonChallenge 1:恺撒密码的解码相关的知识,希望对你有一定的参考价值。

题目:
技术分享

解题思路:
根据图中的K→M,O→Q,E→G,我们可以发现K,O,E这三个字母都向后移动了2位。据说恺撒率先使用了这一加密方法,因此将其命名为恺撒密码。它的基本思想是:通过把字母移动一定的位数来实现加密和解密。
实现方法:

import string
old_chr = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr‘q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
a = string.lowercase
b = a[2:] + a[:2]
a_to_b = string.maketrans(a,b) 
new_chr = string.translate(old_chr,a_to_b)
print new_chr

 

方法解释:

  1. string.lowercase方法将输出a-z这26个字母,若需输出其他连续字母,可对其进行分片处理,如string.lowercase[:7]将输出’abcdefg’。
  2. 通过分片处理,将26个字母中的前两个移动到末端,形成一个所有字母向后移动两位的新序列。
  3. string.maketrans方法接受两个参数(from,to),形成一个由from到to的转换表,该转换表将作为参数传入translate方法。
  4. string.translate方法接受三个参数(string,table,deletechars)。其中deletechars为可选参数,用于删除原字符串中的字符。translate方法将依据转换表对字符串进行转换。

输出:

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that‘s why this text is so long. using string.maketrans() is recommended. now apply on the url.

 

最后,应用此方法到url中的map,将map改为ocr即可进入下一关。

以上是关于PythonChallenge 1:恺撒密码的解码的主要内容,如果未能解决你的问题,请参考以下文章

用python实现凯撒密码

《密码学》 凯撒密码和栅格密码

恺撒密码——python

恺撒密码——python

Python编程练习:编程实现恺撒密码

什么是凯撒加密法?