zoukankan      html  css  js  c++  java
  • python 模块之hashlib

    Hashlib模块

    Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据,其他的所有加密算法使用方式上基本类似。

    hashlib模块主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

    使用方法如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2017/11/27 0027 16:09
    # @Author  : ming
    import hashlib
    
    # MD5方式加密数据,一层加密
    md5 = hashlib.md5()  # 创建一个MD5的加密对象
    md5.update(bytes("I am jack yang", encoding="utf-8"))  # 要对那个字符串加密 就放在这里
    print(md5.hexdigest())  # 拿到加密字符串
    # 46d8cc5a97c734f140ebb122b54a9147
    
    # 为了防止被撞库,可以在创建加密对象时加一个参数
    md5 = hashlib.md5(bytes("yym", encoding="utf-8"))  # 创建一个MD5的加密对象,并添加一个参数yym
    md5.update(bytes("I am jack yang", encoding="utf-8"))  # 要对那个字符串加密 就放在这里
    print(md5.hexdigest())  # 拿到两层加密字符串
    # 996bf846d82625d73c77f4a969b37edc
    
    # 如果字符串太长可以分开写
    md5 = hashlib.md5(bytes("yym", encoding="utf-8"))  # 创建一个MD5的加密对象,并添加一个参数yym
    md5.update(bytes("I am ", encoding="utf-8"))  # 要对那个字符串加密 就放在这里
    md5.update(bytes("jack yang", encoding="utf-8"))  # 要对那个字符串加密 就放在这里
    print(md5.hexdigest())  # 拿到两层加密字符串
    # 996bf846d82625d73c77f4a969b37edc
    

     判断用户登录的小程序

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2017/11/27 0027 16:09
    # @Author  : ming
    import hashlib
    
    def User_information_reading():
        """
        让用户输入用户名和密码,并且把密码进行MD5加密,加盐"hello"
        :return: 返回一个右用户名和加密后的密码组成的键值对
        """
        flag = True
        while flag:
            user_info = {}  # 存储用户每次输入的信息
            username = input("请输入用户名:")
            password = input("请输入密码:")
            if len(password) >= 8:
                hash_md5 = hashlib.md5(bytes("hello", encoding="utf-8"))
                hash_md5.update(bytes(password, encoding="utf-8"))
                password_md5 = hash_md5.hexdigest()
                user_info[username] = password_md5
                flag = False
                return user_info
            else:
                print("密码至少8位")
    
    def register():
        """
        # 用户注册,把用户信息添加到用户数据库中
        :return:
        """
        user_info = User_information_reading()  # 读取用户信息
        user_db.append(user_info)  # 添加到数据库中
        return "注册成功"
    
    def login():
        """
        判断用户登录
        :return:  True:登录成功  False:登录失败
        """
        user_info = User_information_reading()  # 读取用户信息
        if user_info in user_db:  # 判断用户信息在数据库中是否可以匹配
            return "登录成功"
        else:
            return "登录失败"
    
    if __name__ == '__main__':
        user_db = []  # 定义一个用户信息数据库
        while True:
            print("1、用户注册")
            print("2、用户登录")
            print("3、退出程序")
            num = input("请选择:")
            if num == "1":
                print(register())
            elif num == "2":
                print(login())
            elif num == "3":
                exit("
    goodbye")
            else:
                exit("
    input error")
    View Code
  • 相关阅读:
    iOS开发-UIScrollView原理
    关于tableView点击状态栏列表回到顶部的说明
    实用技术之bugly
    KVO你所不知道的"坑"
    iOS iPhone SDK 包含哪些东西?
    NSTime的全面认识
    四 数据结构与算法总结(一)
    三 数据结构 --数和二叉树
    二 线性表
    一 数据结构的概念,时间复杂度和空间复杂度
  • 原文地址:https://www.cnblogs.com/ming5218/p/7905356.html
Copyright © 2011-2022 走看看