凯散密码加密---头歌练习题

本文详细描述了如何使用Python实现凯撒加密,通过计算字符串中字符ASCII值的和得到偏移量,以增强加密效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入格式

一个代表星期几的单词,Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday 中的一个

输出格式

输出:

用恺撒加密方法对上述文件内容进行加密的结果。

相关知识
凯撒密码

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

编程要求

在右侧编辑器中的 Begin-End 区间补充代码,完成文件分析与加密。具体要求如下:

用恺撒加密方法对上述文件内容进行加密,为提高加密强度,约定输入一个秘密单词来产生偏移量;

代码实现

import string
# 读文件,返回字符串  
def read_file(file):  
    with open(file, 'r', encoding='utf-8') as f:  
        return f.read()

# 
def offset_cal(day):  
    """用字符串中字符ASCII值的和对26取模为偏移量  """
    sum_of_ch = 0  
    for c in day:  
        sum_of_ch = sum_of_ch + ord(c)  
    offset = sum_of_ch % 26  
    return offset

def kaisa(txt, number):  
    # 补充你的代码
    lower = string.ascii_lowercase  # 小写字母  
    upper = string.ascii_uppercase  # 大写字母  
    before = string.ascii_letters  
    after = lower[number:] + lower[:number] + upper[number:] + upper[:number]  
    table = ''.maketrans(before, after)  # 创建映射表  
    return txt.translate(table)

    

if __name__ == '__main__':  
    filename = 'mayun.txt'  # 读取的文件名  
    text = read_file(filename)  # text为字符串  
    secret_word = input()  
    offset_number = offset_cal(secret_word)  
    print(kaisa(text, offset_number))  
测试说明

平台会对你编写的代码进行测试:

测试输入:Tuesday

预期输出:

Ayplk 3 aptlz mvy bupclyzpaf. Hss mhpslk. P hwwsplk mvy Ohychyk mvy 10 aptlz. Hss mhpslk, aolf kvu’a lclu dhua av zll tl. Mvy aol shza aptl, P dlua av aol alhjolyz’ jvsslnl dopjo dhz jvuzpklylk aol aopyk vy mvbyao jshzz vm tf jpaf. P hwwsplk qviz mvy 30 aptlz. Nva ylqljalk. Pa dhz zv kpmmpjbsa ha aoha aptl, P dhz zv mybzayhalk. Iljhbzl P ahbnoa pu aol bupclyzpaf. Tf whf dhz $10 h tvuao. Iljhbzl P jvbsk uva mpuk h nvvk qvi pu 1994.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值