python编程100例:密码加密

 

def passwd_pre(pwd):
    vert = []
    for char in pwd:
       if char in 'abc':
           char = '!'
       elif char in 'def':
           char = '@'
       elif char in 'ghi':
           char = '#'
       elif char in 'jkl':
           char = '$'
       elif char in 'mno':
           char = '%'
       elif char in 'pqr':
           char = '^'
       elif char in 'stu':
           char ='&'
       elif char in 'vwx':
           char = '*'
       elif char in 'yz':
           char = '('
       elif char in 'Z':
           char = 'a'
       elif char.isupper():
           # 对于大写字母,先转换成小写字母,然后转成16位数值并加1.
           # 最后转换为字母,即当前字母转换为下一个字母的小写形式。
           char = chr(ord(char.lower())+1) # ASCII码值
           # A转换为a,ord把a转换为a的ASCII值为97,chr(98)把ASCII值转换为字母,即小写b.
           vert.append(char)
           return ''.join(vert)  # 把列表中的各项连接成字符串并返回

def change_txt(pwd,str1,str2):
    vert=''
    pwd = pwd.lower()
    for char in pwd:
        j = str1.find(char)  # 取得在str1中的索引值
        if j == -1: # 在str1中没有该字符,就返回-1
            vert = vert + char  # 没有索引值就保留原字符
        else:
            vert = vert + str2[j]  # 找到索引值,根据这个索引值在str2中取得一个字符替换原字符
    return vert

def change_password(pwd):
    if pwd == None:
        return '-1'
    vert = ''
    vpre = passwd_pre(pwd)
    vlen = len(pwd)
    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz1234567890")
    if vlen <= 4:
        vert = vpre + vstr[0:vlen]
    else:
        vert = vpre + vstr[0:4]
    return vert


if __name__ == '__main__':
    while True:
        pwd = input('请输入密码:')
        if pwd == 'q':
            print('退出程序')
            break
        else:
            pwdnew = change_password(pwd)
            print('密码是:',pwd,'加密后:',pwdnew)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码字神经元

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值