Day28 hashlib模块、合法性校验、tcp登录

1.hashlib模块

mad()/sha1()/sha512.../hmac()

#hashlib 这个模块是一堆加密算法的集合体,哈希算法的加密方式不止一种
https://www.cmd5.com/ md5解密
# 应用场景:在需要效验功能时使用
用户密码的 => 加密,解密
相关效验的 => 加密,解密

#哈希算法也叫摘要算法,相同的数据始终得到相同的输出,不同的数据得到不同的输出。
#(1)哈希将不可变的任意长度的数据,变成具有固定长度的唯一值
(2)字典的键值对映射关系是通过哈希计算的,哈希存储的数据是散列(无序)

##mad加密(相比而言hmac加密的算法不会被破解)

加密效率快 通过的加密精密 方法安全性稍差 位数是32位

# 基本用法
# (1)创建一个md5算法的对象
# (2)把想要加密的字符串通过update方法更新到hs这个对象当中去
# 参数是二进制字节流
# (3)返回的是32位16进制的字符串
# 加盐(加key 只有你自己知道的明文) 目的:增加密码的复杂度
# 加盐是在用md5后者是sha1()或者sha512()时候假如参数key
# 在hashlib.md5(key) # 动态加盐
hs = hashlib.md5()
hs.update("wangwenshuaige".encode("utf-8"))
res = hs.hexdigest()
print(res,len(res))
# a9d3c3ad36ff18b5bc7be96295df079b 32

# 加盐(加key 只有你自己知道的明文) 目的:增加密码的复杂度
hs = hashlib.md5("Xboyww_".encode("utf-8"))
hs.update("123".encode("utf-8"))
res = hs.hexdigest()
print(res)
# 1ea36fffc2174b753b4c47d3deeaca60
# 动态加盐
import random
res = str(random.randrange(10000,1000000))
hs = hashlib.md5(res.encode())
hs.update("aabbccdd".encode())
res = hs.hexdigest()
print(res)
# 485e1769395b018243d7ee16f2540219

## sha

加密效率慢,算法相对来说 安全性稍高

 # 1.创建一个对象

# 2. 对象.update(key) 写入的数据都是字节流的

# 比如:hs = hashlib.sha1()

  hs.update("xboyww_123".encode("utf-8"))

hs = hashlib.sha1()
hs.update("xboyww_123".encode("utf-8"))
res = hs.hexdigest()
# 返回的加密字符串长度是40位
print(res,len(res))
# 4f584b41e8cca8c45f4875ddbfa8113dffa36e31 40
# 加盐
hs = hashlib.sha1("PPUU".encode("utf-8"))
hs.update("xboyww_123".encode())
res = hs.hexdigest()
print(res)
# 744316f7f3c985b49c3b0412f5e8444ea861c4d1
# sha512

hs = hashlib.sha512()
hs.update("12345".encode())
res = hs.hexdigest()
# 返回的字符串长度是128位
print(res,len(res))
# 3627909a29c31381a071ec27f7c9ca97726182aed29a7ddd2e54353322cfb30abb9e3a6df2ac2c20fe23436311d678564d0c8d305930575f60e2d3d048184d79 128

# hmac

hmac里面的new方法相当于hashlib差古剑对象和update联合在一起的操作.

扫描二维码关注公众号,回复: 6341464 查看本文章

2.合法性校验

3.tcp登录

猜你喜欢

转载自www.cnblogs.com/longerandergou/p/10969125.html