• hashilib 初识


    hashlib 模块

    封装一些用于加密的类

    hashilib 加密算法 加密三大步骤

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

    加密的目的: 用于判断和验证,而并非解密

    特点:

    • 把一个大的 数据,切分成不同块,分别对不同的块进行加密,再汇总的结果,和直接对整体数据加密结果一致的。
    • 单向加密,理论不可逆
    • 原始数据的一点小的变化,将导致结果的非常大的差异,“雪崩效应”

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

    给一个数据加密:

    验证:用另一个数据加密的结果和第一次加密的结果 和第一次加密的结果对比

    如果结果相同 说明原文相同,如果结果不同 说明原文不同

    # -*- coding: utf-8 -*-
    '''
    hashilib 加密算法
    加密三大步骤
    1. 获取一个加密对象
    2. 使用加密对象的update方法进行加密,可以调用多次
    3. 通常通过hexdigest 方法 获取加密结果,或digest()
    '''
    
    import hashlib
    import pickle
    #获取一个加密对象
    m = hashlib.md5()
    #使用加密对象的update ,进行加密
    s1 = '我爱你中国123'
    m.update(s1.encode('utf-8'))
    #通过hexdigest 获取加密结果
    res = m.hexdigest()
    # res = m.digest()
    print(res)
    

    通过hashilib 实现简单登录验证:

    import hashlib
    def getMd5(username,password):
        m = hashlib.md5()
        m.update(username.encode('utf-8'))
        m.update(password.encode('utf-8'))
        return m.hexdigest()
    
    
    def register(username,password):
        res = getMd5(username,password)
        with open('User_info.txt','at',encoding='utf-8')as f:
            f.write(res+'
    ')
    
    def login(username,password):
        res = getMd5(username,password)
        with open('User_info.txt','rt',encoding='utf-8') as f:
            for line in f:
                if res == line.strip():
                    return True
            else:
                return False
    while True:
        print(''.center(50,'-'))
        try:
            op = int(input('1.注册	2.登1录	3.退出	
    请输入:'))
        except ValueError:
            print('输入有误')
            continue
        if op == 1:
            username = input('请输入用户名:')
            password = input('请输入密码:')
            register(username,password)
        elif op == 2:
            username = input('请输入用户名:')
            password = input('请输入密码:')
            res = login(username,password)
            if res:
                print('登录成功')
            else:
                print('登录失败')
        elif op == 3:
            break
        else:
            print('输入有误')
            continue
    
  • 相关阅读:
    HTML5开发手机应用--viewport的作用
    media query(媒体查询)和media type(媒体类型)
    html px em pt长度单位(像素 相对长度 点)知识篇
    Markdown——入门指南
    什么是 BOM头以及如何去掉
    设计网页,常见的宽度是多少像素?或者说应该选择多大的分辨率才更美观,更能提高网站的用户驻足时间!
    CSS中元素水平居中显示的方法
    CSS hack技巧大全
    主流浏览器兼容性问题---专属CSS hack
    兼容浏览器的getElementsByClassName方法
  • 原文地址:https://www.cnblogs.com/pandaa/p/12070133.html
Copyright © 2020-2023  润新知