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")