m0_71511310 2022-06-05 23:03 采纳率: 100%
浏览 130
已结题

Python加密文件

【问题描述】有一种加密方法为:其使用一个字母串(可以含重复字母,字母个数不超过50)作为密钥。假定密钥单词串为feather,则先去掉密钥单词中的重复字母得到单词串feathr,然后再将字母表中的其它字母以反序追加到feathr的后面:

f e a t h r z y x w v u s q p o n m l k j i g d c b

加密字母的对应关系如下:

a b c d e f g h i j k l m n o p q r s t u v w x y z
f e a t h r z y x w v u s q p o n m l k j i g d c b

其中第一行为原始英文字母,第二行为对应加密字母。其它字符不进行加密。编写一个程序,用这种密码加密文件。假定要加密的文件名为encrypt.txt及加密后的文件名为output.txt,并假定输入文件中字母全为小写字母,并且输入密钥也全为小写字母。

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-05 23:31
    关注

    输入一个原始字符串,用字典去重,然后把26个字母剩下的字母逆序加在后面,使用str.maketrans()函数建立一张密码表,然后直接使用字符串的translate()方法按这张表转换即可

    s = input()
    s = dict.fromkeys(s,0)
    s = ''.join(s.keys())
    i =122
    while len(s)<26:
        if chr(i) in s:
            i-=1
            continue
        s+=chr(i)
        i-=1
    source = ''.join(chr(i) for i in range(97,123))
    enc_tbl = str.maketrans(source, s)
    
    with open('windata.txt','r') as f:
        p = f.read()
    
    with open('output.txt','w') as f:
        f.write(p.translate(enc_tbl))
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月14日
  • 已采纳回答 6月6日
  • 创建了问题 6月5日

悬赏问题

  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网