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("\ngoodbye")
        else:
            exit("\ninput error")
View Code

 

posted @ 2017-11-27 18:00  YangYongming  阅读(195)  评论(0编辑  收藏  举报