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

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 15: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月13日
  • 已采纳回答 6月5日
  • 创建了问题 6月5日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部