凯撒加密解密Python代码

凯撒加密Python实现

import string

key = int(input("输入凯撒密钥(1-25之间的数):"))
intab = string.ascii_lowercase + string.ascii_uppercase
outtab1 = string.ascii_lowercase[key:] + string.ascii_lowercase[:key]
outtab2 = string.ascii_uppercase[key:] + string.ascii_uppercase[:key]
outtab = outtab1 + outtab2
trantab = str.maketrans(intab, outtab)
plaintext = input("输入明文:")
ciphertext = plaintext.translate(trantab)
print("密文为:" + ciphertext)

凯撒解密Python实现

import string

key = int(input("输入凯撒密钥(1-25之间的数):"))
intab = string.ascii_lowercase + string.ascii_uppercase
outtab1 = string.ascii_lowercase[key:] + string.ascii_lowercase[:key]
outtab2 = string.ascii_uppercase[key:] + string.ascii_uppercase[:key]
outtab = outtab1 + outtab2
trantab = str.maketrans(outtab, intab)
ciphertext = input("输入密文:")
plaintext = ciphertext.translate(trantab)
print("明文为:" + plaintext)

凯撒加密函数和解密函数实现

import string

def CaesarEncrypt(key, plaintext):
    key = abs(key) % 26
    intab = string.ascii_lowercase + string.ascii_uppercase
    outtab1 = string.ascii_lowercase[key:] + string.ascii_lowercase[:key]
    outtab2 = string.ascii_uppercase[key:] + string.ascii_uppercase[:key]
    outtab = outtab1 + outtab2
    trantab = str.maketrans(intab, outtab)
    ciphertext = plaintext.translate(trantab)
    return ciphertext

def CaesarDecrypt(key, ciphertext):
    key = abs(key) % 26
    intab = string.ascii_lowercase + string.ascii_uppercase
    outtab1 = string.ascii_lowercase[key:] + string.ascii_lowercase[:key]
    outtab2 = string.ascii_uppercase[key:] + string.ascii_uppercase[:key]
    outtab = outtab1 + outtab2
    trantab = str.maketrans(outtab, intab)
    plaintext = ciphertext.translate(trantab)
    return plaintext

def main():
    ciphertext = CaesarEncrypt(3, 'I love you.')
    print(ciphertext)
    plaintext = CaesarDecrypt(3, ciphertext)
    print(plaintext)

if __name__ == '__main__':
    main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learnlife

向这个世界输出我独有的声音。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值