上次的凯撒加密那篇只是大概的讲了一下纸质加密轮盘的使用,这次来讲一下凯撒加密的具体代码实现(本人还是个小白,可能不是很详细,不是很清楚,敬请见谅)
话不多说,先附上代码实现的部分
import pyperclip
message = 'This is my secret message.'
key = 13
mod = 'encrypt'
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
translated = ''
message = message.upper()
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol)
if mod == 'encrypt':
num += key
elif mod == 'decrypt':
num -= key
if num >= len(LETTERS):
num -= len(LETTERS)
elif num < 0 :
num += len(LETTERS)
translated += LETTERS[num]
else:
translated += symbol
print(translated)
pyperclip.copy(translated)
要实现凯撒加密,得先安装一下python的pyperclip模块,具体怎么安装就不细说了,附上网址,讲解的很详细:添加链接描述
代码块的具体意思:
1.导入明文和密文
message = 'This is my secret message.'
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
这里的LETTERS之所以用大写是因为python的语法,大写的表示常量以提示程序员
2.选择加密的方式
key = 13
这里选择的是13,具体的作用下面会讲到
3.定义变量,对明文大小写的改变
translated = ''
message = message.upper()
这里的translated起到的就是拼接后面加密过的字符,而为什么要把明文转换成大写,是因为这里的密文是大写的,关于导入更多密文在后续会提到
4.mod
mod = 'encrypt'
这个mod是赋予加密还是解密,如果改成decrypt这段代码就可以起到解密的作用
5.循环部分
for symbol in message:
if symbol in LETTERS:
num = LETTERS.find(symbol)
if mod == 'encrypt':
num += key
elif mod == 'decrypt':
num -= key
if num >= len(LETTERS):
num -= len(LETTERS)
elif num < 0 :
num += len(LETTERS)
translated += LETTERS[num]
else:
translated += symbol
首先就是定义一个变量num,每一个在明文中的字符在密文中找到它的位置,并把这个值赋给num
key的作用就在这:
如果你是要加密,那么就用num的值加上key,解密就是用num的值减去key
后面,num大于等于密文的长度时,就要减去,因为总共26个密文,超过26就找不到对应的字符了
最后那个else语句中,就是把明文中没有匹配到的字符直接拼接在变量后面
好了,凯撒加密的代码实现就说到这吧,凯撒加密不是什么很难的加密方法,可以说是基础,很容易理解掌握的。