凯撒加密算法的python实现
1.什么是凯撒加密算法
恺撒密码(英语:Caesar cipher)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
2. 加密方法
**
恺撒密码的加密、解密方法还能够通过同余的数学方法进行计算。首先将字母用数字代替,A=0,B=1,…,Z=25。此时偏移量为n的加密方法即为:
解密方法:
3.python实现
恺撒密码的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左或向右移动一个固定数目的位置。例如,当偏移量是左移5的时候(解密时的密钥就是5):
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;
密文字母表:FGHIJKLMNOPQRSTUVWXYZABCDE。
密文建立过程,需要将明文字母表中每个字母进行加密形成密文字母表,即取出每个字母的元素和下标K1,将K1-密钥,如果大于零,K2为下标-密钥,反之则为26+(K1-密钥),并对应于空密文字母表中的K2位置,并将取出的元素加到空密文字母表的K2位置上,建立密文字母表。
使用时,将明文字母表进行对应,即可得到密文
4.python代码实现如下:
#建立加密字典、解密字典
def function (key):
#创建明文字母表
invented_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
secret_emplty = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] #建立空的密文字母表
invented_tuple = tuple(list(invented_chars)) #将字符串形成元组
#建立加密之后的密文字母表
for i, j in enumerate(invented_tuple):
if i - key <0 :
a = (i - key) + 26
secret_emplty[a] = j
else:
a = i - key
secret_emplty[a] = j
print(secret_emplty) #建立完成密文字母表,输出查看
encryption_dict = dict(zip(invented_tuple,secret_emplty)) #建立加密字典
decryption_dict = dict(zip(secret_emplty,invented_tuple)) #建立解密字典
return encryption_dict, decryption_dict
#生成密文
def encrypt(information,**encryption):
info = tuple(list(information)) #消息字母的处理
secret = [] #建空密文
#加密
for letter in info:
for letter_encrypt,value_encrypt in encryption.items():
if letter == letter_encrypt:
secret.append(value_encrypt)
return secret
#解密
def decrypt(secret,**decryption):
information_solve = [] #建立空明文
for letter in secret:
for letter_decrypt,value_encrypt in decryption.items():
if letter == letter_decrypt:
information_solve.append(value_encrypt)
return information_solve
if __name__ == '__main__':
key = eval(input("请输入密钥:"))
information = input("请输入消息:")
encryption,decryption = function(key)
secret = encrypt(information,**encryption) #加密
print(secret)
information_solve = decrypt(secret,**decryption) #解密
print(information_solve)
运行代码如下: