Python编程实例05——简单的密码加密

本文介绍了一种Python编程中的密码加密方法,通过字符转换和字符串映射实现密码的加密。主要涉及ord()和chr()函数,以及自定义的密码前缀生成和字符串替换函数。示例代码展示了如何对输入的密码进行多次转换,生成加密后的密码。
摘要由CSDN通过智能技术生成

系列目录

上一篇:Python编程实例04——简单密码校验



前言

关键词:密码加密


一、编程要点

常见的密码加密方式主要有以下三种方式:

  • MD5加密
  • Base64加密
  • SHAI加密

然而本节都不涉及(滑稽脸),本实例主要是提供一种加密的技巧供扩展思路。以下是涉及到的主要函数讲解:

  • ord()函数:可以将字符转化为你所需要的ASCII码
  • chr()函数:可以将0-255中的任一整数转化为你所需要的字符

二、代码实现

#功能:形成密码前缀,实现方式是对密码中的每个字符进行转换得到新的字符串。
def passwd_pre(pwd):
    vret = []
    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():
            char = chr(ord(char.lower())+1)
        vret.append(char)
        return ''.join(vret)

#功能:根据传入的密码和两个字符串对密码中字符进行转换   
def change_txt(pwd, str1, str2):
    vret = ''
    pwd = pwd.lower()
    for char in pwd:
        j = str1.find(char)
        if j == -1:
            vret = vret + char
        else:
            vret = vret + str2[j]
    return vret

#功能:加密程序
def change_password(pwd):
    if pwd == None:
        return '-1'
    vret = ''
    vpre = passwd_pre(pwd)
    vlen = len(pwd)
    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","abcdefghijklmnopqrstuvwxyz1234567890")
    if vlen <= 4:
        vret = vpre + vstr[0:vlen]
    else:
        vret = vpre + vstr[0:4]
    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","qwertyuiopasdfhgjklmnbvcxz0987654321")
    if vlen <= 4:
        vret = vret + vstr[0:vlen]
    else:
        vret = vret + vstr[0:4]
    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9o10p")
    if vlen <= 4:
        vret = vret + vstr[0:4]
    else:
        vret =vret + vstr[0:4]
    vstr = change_txt(pwd,"1234567890abcdefghijklmnopqrstuvwxyz","pl0okm9ijn8uhb7ygv6tfc5rdx4esz3wa2ql")
    if vlen <= 4:
        vret = vret + vstr[0:vlen]
    else:
        vret = vret + vstr[0:4]
    return vret

#主函数:main
if __name__== '__main__':
    while True:
        pwd = input("请输入密码:")
        if pwd == 'q':
            print("退出程序。。。")
            break
        else:
            
            pwdnew = change_password(pwd)
            print('您录入的密码是',pwd,',该密码加密后为',pwdnew)

运行效果:

请输入密码:testT123@/
您录入的密码是 testT123@/ ,该密码加密后为 *4o347h87if8iz7sz
请输入密码:q
退出程序。。。


总结

代码在开始定义了passwd_pre()、change_txt()和change_password()三个函数。passwd_pre()函数对密码的每个字符进行转换,其返回的值作为加密后的密码前缀;change_txt()函数实现对字符串中每个字符进行转化的功能;change_password()函数调用了passwd_pre()函数得到新密码的前缀,4次调用change_txt()函数取得4个字符串,并把这4个字符串追加到新密码中,这样就得到一个加密的密码。
主函数取得用户录入的密码,调用change_password()函数进行密码加密,然后把原密码与加密后的密码显示出来。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值