一.简介
在密码学中中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
二.如何用python简单的实现凯撒加密和解密
1首先要获得两个分别包含a-z和A-Z的数组,方便接下来对字母进行偏移变化的实现
#首先先把A-Z放入upper_list中
import string
upper = string.ascii_uppercase
upper_list = []
for c in upper:
upper_list.append(c)
#首先先把a-z放入个low_list中
lower = string.ascii_lowercase
lower_list = []
for c in lower:
lower_list.append(c)
2先假设只对所有小写字母进行偏移加密,假设偏移量为5
list = []
for c in lower_list:
offset = 5
#偏移量等于五
index = (lower_list.index(c)+5) % len(lower_list)
print(lower_list[index],end=" ")
#就得到了 如下的列表
#[f g h i j k l m n o p q r s t u v w x y z a b c d e]
注意
len(lower_list)作用在于:index范围会在(0+5)到(25+5)之间,超过了数组下标,需要对长度进行余
3假设list1 就是lower_list加密后结果,然后对list1进行解密
list1 =['f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b', 'c', 'd', 'e']
for c in list1:
offset = 5
index = list1.index(c)-offset
print(list1[index])
注意
左移时不需要取余,在python中即使列表中下表是负号也是可以的,比如数组最后一个下表可以用-1表示
4最后完整下代码,即加密解密的字母中有大小写的情况下
import string
upper_list = string.ascii_uppercase
lower_list = string.ascii_lowercase
def encryption(source):
offset = 5
str = ''
#定义一个目标字符串
for c in source:
if c in lower_list:
index = (lower_list.index(c)+offset) % len(lower_list)
str += lower_list[index]
elif c in upper_list:
index = (upper_list.index(c)+offset) % len(lower_list)
str += upper_list[index]
return str
def cryption(result):
offset = 5
str1 = ''
#定义一个目标字符串
for c in result:
if c in lower_list:
index = lower_list.index(c)-offset
str1 += lower_list[index]
elif c in upper_list:
index = upper_list.index(c)-offset
str1 += upper_list[index]
return str1
if __name__ == '__main__':
source ="JiaYou"
result = encryption(source)
result1 = cryption(result)
print(result)
print(result1)
#分别输出OnfDtz和JiaYou
版权归原作者 修伊_格莱尔 所有, 如有侵权,请联系我们删除。