chshweforever 2022-06-16 09:23 采纳率: 100%
浏览 69
已结题

用python实现以下加密解密的问题

以下功能要求用Python实现:求完整的代码。

小明开发了一个班级信息管理系统,用户通过帐号和密码进行登陆,为了确保用户帐号的安全,他需要将用户密码进行加密再保存。请你根据要求编制程序,完成小明的需求。
1.用户密码由7位纯数字组成,将其加密后输出。加密方法是将该数每一位上的数字加3然后除以10取余,作为该位上的新数字,最后将第一位与第四位交换,组成加密后的新数。(10分)
2.为了进一步提高保密性,用户密码由7位数字或小写字母组成。加密方法是判断该密码每一位字符,如果是数字,则该数字加3然后除以10取余,作为该位上的新字符;如果是小写字母,则将小写字母按顺序向后推3位作为该位上的新字符(如a加密后为d),如果超出小写字母z,则返回小写字母a继续循环。(8分)
3.设计解密程序,输入题2生成的密文能正确进行解密输出。(10分)
4.设计的程序有容错功能,题1中如果输入的7个字符不是纯数字,则提示“输入非法”;题2中如果输入的7个字符有不是数字或小写字母,则提示“输入非法”。(5分)
5.程序界面友好,有相应提示功能。(2分)

  • 写回答

2条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-16 11:06
    关注
    def encry1(pwd:str):
        if not pwd.isnumeric(): return False
        new=''
        for i in pwd:
            new+=str((int(i)+3)%10)
        return new[3]+new[1:3]+new[0]+new[4:]
    
    def encry2(pwd:str):
        new=''
        for i in pwd:
            if i.isnumeric():
                new+=str((int(i)+3)%10)
            elif i.islower():
                temp = ord(i)+3
                if temp>122:temp-=26
                new += chr(temp)
            else:
                return False
        return new
    
    def decry(pwd:str):
        new = ''
        for i in pwd:
            if i.isnumeric():
                new += str((int(i)+10)-3)[-1]
            elif i.islower():
                temp = ord(i)-3
                if temp<97:temp+=26
                new += chr(temp)
            else:
                return False
        return new
    
    method={'1':["加密",encry1],'2':["加密",encry2],'3':["解密",decry]}
    while True:
        m = input("请输入操作:1-加密一/2-加密二/3-解密:")
        if m in "123":
            break
    pwd=input(f"请输入需要{method[m][0]}的7位密码:")
    while len(pwd)!=7:
        pwd=input("请输入7位密码:")
    if method[m][1](pwd):
        print(f"{method[m][0]}后的密码为:"+method[m][1](pwd))
    else:
        print("输入非法")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月16日
  • 已采纳回答 6月16日
  • 创建了问题 6月16日

悬赏问题

  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持