• hash应用-加随机盐保存密码


    用户注册,将“用户名”,“密码”,“盐值”存入用户表

    输入:密码明文

    输出:密码密文+盐值

    import hashlib, random, string
    
    
    def get_salt(length=8):
        '''
        从a-zA-Z0-9生成指定数量的随机字符
        :param length:字符数量
        :return:
        '''
        salt = ''.join(random.sample(string.ascii_letters + string.digits, length))
        return salt
    
    
    def hash_salt(pwd):
        '''
        获取盐和密码密文
        :param pwd: 密码明文
        :return:
        '''
        salt = get_salt()  # 盐值
        pwd_salt = pwd + salt  # 加盐后的密码
        md5_pwd_salt = hashlib.md5(pwd_salt.encode()).hexdigest()
        return salt, md5_pwd_salt
    
    
    def auth(username, pwd):
        """
        认证用户名密码是否匹配
        :param username:
        :param pwd:
        :return:
        """
        # 根据username在用户表中查询出salt, pwd密文
        salt = "WTAkEeRJ"
        md5_pwd_salt = 'a4545264e99c2baee850a9fec92f5b45'
        # 根据pwd明文和salt算出密文
        pwd_salt = pwd + salt  # 加盐后的密码
        md5_str = hashlib.md5(pwd_salt.encode()).hexdigest()
        # 将算出的密文和用户表中存放的密文进行对比
        return md5_pwd_salt == md5_str
    
    
    if __name__ == '__main__':
        print(hash_salt("pwd1234567"))
        print(auth("username", "pwd1234567"))
  • 相关阅读:
    /bin/bash^M:损坏的解释器: 没有那个文件或目录
    QT槽函数处理线程
    Strategy策略模式
    Proxy代理模式
    Ubuntu系统修改BIOS时间问题
    Ubuntu下安装Goldendict(翻译软件)
    自定义QMenu
    C connect实现Timeout效果(Windows)
    059 Python计算生态概览
    058 程序设计方法学小结
  • 原文地址:https://www.cnblogs.com/staff/p/12920871.html
Copyright © 2020-2023  润新知