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

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 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动
  • ¥15 大一C语言期末考试,求帮助🙏🙏
  • ¥15 ch340驱动未分配COM
  • ¥15 Converting circular structure to JSON
  • ¥30 Hyper-v虚拟机相关问题,求解答。
  • ¥15 TSM320F2808PZA芯片 Bootloader