【一】time 模块
【1】时间戳
import time
print(time.time())
#1703122154.8660362
【2】时间元组
本地时间
print(time.localtime(time.time()))
#time.struct_time(tm_year=2023, tm_mon=12, tm_mday=21, tm_hour=9, tm_min=30, tm_sec=38, tm_wday=3, tm_yday=355, tm_isdst=0)
国际时间
print(time.gmtime(time.time()))
【3】格式化输出时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
【二】hashlib 模块
- hashlib是一个摘要算法模块,不是加密模块
- 摘要算法只能单向加密,不能反向解密
# 导入hashlib模块
import hashlib
# 定义密码
password='123456'
# 创建md5对象
md5=hashlib.md5()
# 更新密码
md5.update(password.encode('utf-8'))
# 打印16进制摘要
print(md5.hexdigest())
# 打印摘要
print(md5.digest())
#e10adc3949ba59abbe56e057f20f883e
#b'\xe1\n\xdc9I\xbaY\xab\xbeV\xe0W\xf2\x0f\x88>'
-
通过加盐提高md5加密的安全性
def encry_password(data, salt): # ''' # :param data: 原始数据 # :param salt: 加的盐 # :return: 返回了加密后的十六进制的加密串 # ''' # # (1)需要加密的数据 = 原始数据 + 盐 data = data + salt # # (2)转成二进制数据 data = data.encode('utf8') # # (3)创建MD5对象 md5 = hashlib.md5() # # (4)将二进制数据扔到MD5对象中进行加密 md5.update(data) # 这里可以将数据作为一个整体(二进制数据)进行加密,也可以分批,分成几个部分进行加密 # # (5)取出加密后的加密串 return md5.hexdigest()
-
登录注册加密使用案例
import hashlib import json import random def get_verify_code(n): code = '' for i in range(n): random_int = str(random.randint(0, 9)) # 0-9之间的整数 random_upper = chr(random.randint(65, 90)) # A-Z之间的字母 random_lower = chr(random.randint(97, 122)) # a-z之间的字母 temp = random.choice([random_int, random_upper, random_lower]) code += temp return code def encry_password(data, salt): # ''' # :param data: 原始数据 # :param salt: 加的盐 # :return: 返回了加密后的十六进制的加密串 # ''' # # (1)需要加密的数据 = 原始数据 + 盐 data = data + salt # # (2)转成二进制数据 data = data.encode('utf8') # # (3)创建MD5对象 md5 = hashlib.md5() # # (4)将二进制数据扔到MD5对象中进行加密 md5.update(data) # 这里可以将数据作为一个整体(二进制数据)进行加密,也可以分批,分成几个部分进行加密 # # (5)取出加密后的加密串 return md5.hexdigest() def save_data(path,data): with open(path,'a',encoding='utf8') as fp: json.dump(data,fp,ensure_ascii=False) def register(): username=input("请输入用户名:").strip() password=input("请输入密码:").strip() code=get_verify_code(6) print(code) check_password=input("请输入验证码:").strip() print(check_password.upper()) if code.upper()!=check_password.upper(): return False,f'注册失败验证码错误' salt=get_verify_code(4) password=encry_password(password,salt) password+=salt user_data={username:{"username":username,"password":password}} save_data("user.json",user_data) return True, f'注册成功' # register() def read_data(): with open("user.json","r",encoding="utf8") as fp: data=json.load(fp) return data def login(): username = input("请输入用户名:") password = input("请输入密码:") data=read_data() if username not in data: return False, f'用户名错误请重新输入' user_password=read_data()[username]['password'] salt=user_password[-4:] old_password=user_password[:-4] check_pasword=encry_password(password,salt) if old_password.upper()!=check_pasword.upper(): return False,f'登陆失败!' return True,f'登陆成功!' print(login())