Skip to content

凯撒密码——加密

题目

凯撒密码——加密

类型:字符串

描述

在密码学中,凯撒密码是一种最简单且最广为人知的加密技术。“恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 变成 E,以此类推,小写字母和数字也一样处理,其他字符不作任何改变。

例如这样一条指令:'All roads lead to Rome.' 用恺撒密码加密后就成为:‘Doo urdgv ohdg wr Urph.’

python
import string

lowers = string.ascii_lowercase #lowers是全部的小写英文字母
uppers = string.ascii_uppercase #uppers是全部的大写英文字母
digits = string.digits #digits是全部的数字字符

table = ''.maketrans('opqrstuvwxyz' ,'rstuvwxyzabc') # 建立'o' -> 'r', 'p' ->  's' ..的映射关系,存储在table里
place = 'zoo'.translate(table)      #使用table里的映射关系对'zoo'加密,得到密文'crr'
print(place)  # crr

研究上面的代码,掌握 string 库、maketrans() 函数、translate()函数的用法后,编写一个程序实现凯撒加密:输入一个字符串,对字符串中的字母和数字进行加密(规定加密偏移量为 3,即后移三位),并输出加密后的字符串。

输入格式

输入为一行,是一个字符串 s1。

输出格式

输出为一行,对 s1 进行加密后的字符串。

示例

输入:Open Box PassWord:2021

输出:Rshq Era SdvvZrug:5354

python
# --------      -------    --------
# @Author : 赵广辉
# @Contact: vasp@qq.com
# @Company: 武汉理工大学
# @Version: 1.0
# @Modify : 2022/06/13 11:33
# Python程序设计基础,赵广辉,高等教育出版社,2021
# Python程序设计基础实践教程,赵广辉,高等教育出版社,2021
# --------      -------    --------

import string

def caesar_cipher(text):
    """接收一个字符串为参数,采用字母表和数字中后面第3个字符代替当前字符的方法
    对字符串中的字母和数字进行替换,实现加密效果,返回值为加密的字符串。
    例如:2019 abc 替换为5342 def """
    res = ''
    lowers = 'abcdefghijklmnopqrstuvwxyzabc'  # lowers是全部的小写英文字母
    uppers = 'ABCDEFGHIJKLMNOPQRSTUVWXYZABC'  # uppers是全部的大写英文字母
    digits = '0123456789012'  # digits是全部的数字字符
    for i in text:
        if i in lowers:
            res += lowers[ord(i) - ord('a') + 3]
        elif i in uppers:
            res += uppers[ord(i) - ord('A') + 3]
        elif i in digits:
            res += digits[ord(i) - ord('0') + 3]
        else:
            res += i
    return res

if __name__ == '__main__':
    plaintext = input()
    print(caesar_cipher(plaintext))