栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

系列目录

上一篇: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()函数进行密码加密,然后把原密码与加密后的密码显示出来。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016044.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号