zoukankan      html  css  js  c++  java
  • 常用模块hashlib

    常用模块hashlib

    给一个数据加密的三大步骤:

    1.获取一个加密对象
    2.使用加密对象的update,进行加密,update方法可以调用多次
    3.通常通过hexdigest获取加密结果,或digest()方法.

    import hashlib
    # 获取一个加密对象
    # m = hashlib.md5()
    # # 使用加密对象的update,进行加密
    # m.update('abc中文'.encode('utf-8'))
    # m.update('def'.encode('utf-8'))
    
    
    # 通过hexdigest获取加密结果
    # res = m.hexdigest()
    # res = m.digest()
    # print(res)      # 1af98e0571f7a24468a85f91b908d335
    

    给一个数据加密,
    验证:用另一个数据加密的结果和第一次加密的结果对比.
    如果结果相同,说明原文相同.如果不相同,说明原文不同.

    # 不同加密算法:实际上就是加密结果的长度不同;
    s = hashlib.sha224()
    s.update(b'abc')
    print(s.hexdigest())
    #23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7
    print(len(s.hexdigest()))#56
    

    在创建加密对象时,可以指定参数,称为salt

    # 在创建加密对象时,可以指定参数,称为salt.
    m = hashlib.md5(b'abc')
    print(m.hexdigest())
    

    注册,登录程序(加密):

    def get_md5(username,passwd):
        m = hashlib.md5(username[::-1].encode('utf-8'))
        m.update(username.encode('utf-8'))
        m.update(passwd.encode('utf-8'))
        return m.hexdigest()
    
    
    def register(username,passwd):
        # 加密
        res = get_md5(username,passwd)
        # 写入文件
        with open('login',mode='at',encoding='utf-8') as f:
            f.write(res)
            f.write('
    ')
    
        # username:xxxxxx
    
    def login(username,passwd):
        # 获取当前登录信息的加密结果
        res = get_md5(username, passwd)
        # 读文件,和其中的数据进行对比
        with open('login',mode='rt',encoding='utf-8') as f:
            for line in f:
                if res == line.strip():
                    return True
            else:
                return False
    
    while True:
        op = int(input("1.注册 2.登录 3.退出"))
        if op == 3 :
            break
        elif op == 1:
            username = input("输入用户名:")
            passwd = input("输入密码:")
            register(username,passwd)
        elif op == 2:
            username = input("输入用户名:")
            passwd = input("输入密码:")
            res = login(username,passwd)
            if res:
                print('登录成功')
            else:
                print('登录失败')
    
  • 相关阅读:
    jQuery Event.delegateTarget 属性详解
    velocity 判断 变量 是否不是空或empty
    触碰jQuery:AJAX异步详解
    jQuery Select操作大集合
    常用元素默认margin和padding值问题探讨
    九大排序算法再总结
    八大排序算法
    JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈
    使用CSS3的appearance属性改变元素的外观
    CSS清浮动处理(Clear与BFC)
  • 原文地址:https://www.cnblogs.com/wyh0717/p/13036269.html
Copyright © 2011-2022 走看看