凯撒加密是一种简单的加密技术。据记载,这是凯撒大帝曾经用来对军事信息进行加密的方法。
这是一种替换加密的技术。想要传递的密文的所有字母都在字母表中向后或者向前移动一个固定数值的距离,形成明文。
举个?
当偏移量是5的时候,密文中所有字母a都被替换成f,b都被替换成g,z都被替换成e,以此类推。
需要注意的是这是一个循环的过程,z后面接着a,因此需要模26,加密和解密是一个相反的过程,一个加上偏移量,另一个就减去偏移量,反之亦反。
知道原理后,我们来用Python实现一下这个凯撒加密吧~
我们可以默认偏移量是5(当然这个参数可以设置),遍历密文字符串,如果当前字符不属于字母,我们便不做改动。
当这个字符是字母时,我们需要按照大小写来分别看待,大写字母共用一套密码,小写字母共用一套密码。
Python的内置函数 ord() 可以输出字符的ASCII码,而 chr() 则正好相反,可以输出ASCII码对应的字符。
def enc(string,offset=5):
new_string=[]
for st in string:
if not st.isalpha():
new_string.append(st)
else:
a="A" if st.isupper() else "a"
new_string.append(chr((ord(st)-ord(a)+offset)%26+ord(a)))
encryptor="".join(new_string)
print(encryptor)
下面这个字符串是我对你说的悄悄话,来破解一下吧!
'Bjqhtrj yt anxny rd tkknhnfq fhhtzsy,Ymfspx ktw dtzw wjfinsl!'
破解了也没有奖励的~