在应用程序的接口里,常用到签名:其中签名里用到MD5加密,这里用hashlib实现

hashlib

概念:Hash,译做“散列”,也有直接音译为“哈希”的。把任意长度的输入,通过某种hash算法,变换成固定长度的输出,

该输出就是散列值,也称摘要值。该算法就是哈希函数,也称摘要函数。

 

hashlib模块支持md5(),sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(),blake2s(),

sha3_224(), sha3_256(), sha3_384(), sha3_512(), shake_128(), shake_256()等多种hash构造方法。

这些构造方法在使用上通用,返回带有同样接口的hash对象,对算法的选择,差别只在于构造方法的选择。

例如sha1()能创建一个SHA-1对象,sha256()能创建一个SHA-256对象。

然后就可以使用通用的update()方法将bytes类型的数据添加到对象里,

最后通过digest()或者hexdigest()方法获得当前的摘要。

import hashlib
import time

def mymd5(pw):
md = hashlib.md5() # 生成md5对像
md.update(pw.encode('utf-8')) # 加密,加密密码的时候,必须对密码进行编码,否则会报错
print("old—value:",pw) #用十六进制输出加密后的数据
print ("md5-value:",md.hexdigest())

t = time.time()
code="iuehf3"+"jknshfemckfhskdf"+str(int(round(t * 1000)))+"baidu"
mymd5(code)

python里面的MD5加密 ---# hashlib包的使用_时间戳

 

 

MD5双重加密:

md5_obj=hashlib.md5("123456".encode("utf-8"))
str1=md5_obj.hexdigest() #加密1次
obj2=hashlib.md5(str1.encode("utf-8"))
str2=obj2.hexdigest()#加密2次
print(str2) #双重加密后,同样解密开

 

 

MD5加盐值(SALT)

各大网站的暴力破解,都需要再一次提高MD5的安全性。所谓加盐就是加一些辅助的调料,这里称为Salt值。
举个栗子,比如用户注册的密码,肯定不能明文存数据库,当然现在肯定不会再出现CSDN这种事情了,那密码加密之前是单纯的使用MD5,

现在要给MD5加点调料,那问题是最终MD5不可逆,用户注册后第二次怎么登陆?

数据库在存储的时候需要在表里面多加一个Salt字段,用来存储你加的调料是什么,等用户登录的时候,拿用户注册的密码+Salt字段,然后再进行MD5,然后再用加密后的内容和数据库存储的MD5密码进行匹配,成功的话则提示成功,匹配失败的话就登录失败。

from random import Random  
import hashlib

# 获取由4位随机大小写字母、数字组成的salt值
def create_salt(length = 4):
salt = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
len_chars = len(chars) - 1
random = Random()
for i in range(length):
# 每次从chars中随机取一位
salt += chars[random.randint(0, len_chars)]
return salt

# 获取原始密码+salt的md5值
def create_md5(pwd,salt):
md5_obj = hashlib.md5()
md5_obj.update((pwd + salt).encode("utf-8"))
return md5_obj.hexdigest()

# 原始密码
pwd = '123456'
# 随机生成4位salt
salt = create_salt()
# 加密后的密码
md5 = create_md5(pwd, salt)

print('[pwd]\n',pwd )
print('[salt]\n', salt)
print('[md5]\n', md5)

python里面的MD5加密 ---# hashlib包的使用_用户注册_02

python里面的MD5加密 ---# hashlib包的使用_数据_03

 

 

 

 

 python获取毫秒级别时间戳

1、获取秒级时间戳与毫秒级时间戳、微秒级时间戳
import time
import datetime
t = time.time()
print (t) #原始时间数据
print (int(t)) #秒级时间戳
print (int(round(t * 1000))) #毫秒级时间戳
print (int(round(t * 1000000))) #微秒级时间戳

 

 

 

心有猛虎,细嗅蔷薇