首页 > 其他分享 >hashlib模块

hashlib模块

时间:2024-03-20 17:58:19浏览次数:22  
标签:hashlib key res encode 模块 hs print

hashlib模块

import hashlib

一堆加密算法的集合体,哈希算法的加密方式不止一种

哈希算法也叫摘要算法,相同的数据始终得到相同的输出,不同的数据得到不同的输出。

  1. 哈希将不可变的任意长度的数据,变成具有固定长度的唯一值
  2. 字典的键和集合的值是通过哈希计算存储的,存储的数据是散列(无序)

加密破解的网站

https://www.cmd5.com/

撞库

撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。

哈希的应用

场景: 网站密码加密
hashlib模块的加密原则是单向不可逆的
举例 md5算法 : 可以把字符串变成具有固定长度的32位十六进制字符串

加盐

​ 固定的在密码前面加一串字母或数字进行加密 === > 加key

基本语法

md5对象

import hashlib
import random

# 1.创建md5对象
hs = hashlib.md5()

# 2.把要加密的数据更新到对象中  [update => 把字节流更新到对象之后,进行加密]
hs.update("111222".encode("utf-8"))

# 3.获取十六进制的字符串
res = hs.hexdigest()
print(res,   len(res))  # 00b7691d86d96aebd21dd9e138f90840  32



# 加盐 (加key , 加一个关键字)
hs = hashlib.md5("XBOYww_".encode())
hs.update("111222".encode())
res = hs.hexdigest()
print(res)  # 623e0e8d4ecabd638c36a5e40189ba8f


res = str(random.randrange(100000,1000000))
hs = hashlib.md5(res.encode())   # 参数需要时一个字符串
hs.update("111222".encode())
res = hs.hexdigest()
print(res)

sha系列

hs = hashlib.sha1()  # 结果是具有固定长度40位的十六进制字符串;
hs.update("sha系列算法".encode())
# hs = hashlib.sha512("XGIRLww_".encode())   加盐
res = hs.hexdigest()
print(res , len(res))   

"""20c2502d0e00bf8fe35ebfbf097049d1f070e7968f30ef3353ff33d311af50da6b3883bfb9ab411f9dc4cdcd2310b39f5815c6dc1c48cd138d07443a6bcdcd11 128"""

hmac加密算法

import hmac
import os

key = b"xdogaa_"
msg = b"112233"
 
# new(盐(字节流),密码(字节流) )  加盐

hm = hmac.new(key,msg)
res = hm.hexdigest()

"""
	eebe14b1c144092121236cb1e3da396a
"""

print(res , len(res))

# 动态加盐

"""
	uradom的使用方法
    os.urandom(位数) 返回随机的二进制字节流
    res = os.urandom(10)
    print(res , len(res))
"""

key = os.urandom(64)
msg = b"112233"

hm = hmac.new(key,msg)
res = hm.hexdigest()

print(res , len(res))

标签:hashlib,key,res,encode,模块,hs,print
From: https://www.cnblogs.com/wbcde116/p/18085752

相关文章