python 实现凯撒加密

  凯撒密码(Caesar)基本原理

字母表一共有26个英文字母,加密时,我们需要将某个明文字母做N位偏移得到密文,这个N最多为26,而且偏移为26时和偏移为0时一样,明文和密文对应相等,实际上可以说最大的偏移量为25,这里的偏移量是这个加密解密算法的核心,我们可以说他就是秘钥。

公式:

加密公式: f(a)=(a+n) mod 26
解密公式: f(a)=(a+26-n) mod 26
n为偏移量
用python实现凯撒加密是非常方便的,代码如下:

import string
def kaisa(s, k): #定义函数 接受一个字符串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) #对s进行偏移 即加密

s = input('请输入一个字符串:')

k = int(input('请输入一个整数密钥:'))

print(kaisa(s, k))

 

你可能感兴趣的:(算法)