python实现凯撒密码加密解密

python实现凯撒密码加密解密

凯撒加密就是通过将字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,被替换成密文。例如,当偏移量是2的时候,所有的字母B将被替换成D,C变成E,以此类推Y将变成A,Z变成B。由此可见,偏移量就是凯撒密码加密和解密的密钥。
下面使用python代码来实现凯瑟密码的加密解密。

import string
def kaisa_jiami(s,k):
    lower=string.ascii_lowercase#小写英文字母
    upper=string.ascii_uppercase#大写英文字母
    before=string.ascii_letters#全部英文字母字母
    after=lower[k:]+lower[:k]+upper[k:]+upper[:k]#建立循环字母
    table=''.maketrans(before,after)#创建映射表
    return s.translate(table)

def kaisa_jiemi(s,k):
    lower=string.ascii_lowercase
    upper=string.ascii_uppercase
    before=string.ascii_letters
    after=lower[k:]+lower[:k]+upper[k:]+upper[:k]
    table=''.maketrans(after,before)
    return s.translate(table)
def main():
    s=input("请输入要加密的字符串:")
    k=int(input("请输入一个整数密钥:"))#将k转换为整数,默认输入为字符
    print('需要加密的字符串为:',s)
    a=kaisa_jiami(s,k)  
    print("加密后为:",a)  
    b= kaisa_jiemi(a,k)
    print("解密后为:",b)
if __name__=='__main__':
    main()

运行结果

请输入要加密的字符串:HELLO world
请输入一个整数密钥:3
需要加密的字符串为: HELLO world
加密后为: KHOOR zruog
解密后为: HELLO world

上述程序中主要用到了maketrans()和translate()两个方法。下面让我们来详细看一下这两个方法的使用方法。
translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符。
比如

import string
map = ''.maketrans('ABC123', 'abcDEF')#形成一个映射,将ABC123分别映射为abcDEF
s = "123ABC"  
s.translate(map)#按照map中的映射关系进行字符的替换。

运行结果

'DEFabc'
今天就讲到这里了呀!!!
  • 22
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
凯撒密码是一种最简单的加密算法,它的原理是将明文中的每个字母按照一定的规则进行位移,从而得到密文。具体来说,就是将每个字母往后移动k个位置,k为加密密钥。 下面是Python实现凯撒密码加密解密的代码: ```python def caesar_encrypt(plaintext, key): """ 凯撒密码加密函数 :param plaintext: 明文 :param key: 密钥,即位移量 :return: 密文 """ ciphertext = '' for char in plaintext: if char.isalpha(): # 如果是字母,进行加密 if char.isupper(): ciphertext += chr((ord(char) - 65 + key) % 26 + 65) else: ciphertext += chr((ord(char) - 97 + key) % 26 + 97) else: # 如果不是字母,直接添加 ciphertext += char return ciphertext def caesar_decrypt(ciphertext, key): """ 凯撒密码解密函数 :param ciphertext: 密文 :param key: 密钥,即位移量 :return: 明文 """ plaintext = '' for char in ciphertext: if char.isalpha(): # 如果是字母,进行解密 if char.isupper(): plaintext += chr((ord(char) - 65 - key) % 26 + 65) else: plaintext += chr((ord(char) - 97 - key) % 26 + 97) else: # 如果不是字母,直接添加 plaintext += char return plaintext ``` 使用示例: ```python # 加密 plaintext = 'hello, world!' key = 3 ciphertext = caesar_encrypt(plaintext, key) print(ciphertext) # 输出:khoor, zruog! # 解密 key = 3 plaintext = caesar_decrypt(ciphertext, key) print(plaintext) # 输出:hello, world! ``` 注意:凯撒密码加密解密都是用同一个函数实现的,只需要传入不同的参数即可。为了方便起见,这里将加密和解密放在了同一个文件中,实际使用时可以根据需要将它们放在不同的文件里。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值