Python——hashlib&hmac(加密模块)

bytes类型数据——通过heashlib算法——固定长度的字符串。

核对两个文件是否相同,一般都使用MD5,而sha1是用于进行数据加密使用。(使用方法一样,就是md5改成sha1)

主要用于对字符串的加密,最常用的为MD5加密:

1
2
3
4
5
6
7
8
9
import hashlib
 
def get_md5(data):
    obj = hashlib.md5()
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()
    return result
val  = get_md5('123'#这里放入要加密的字符串文字。
print(val)
1
2
3
#简便的写法:
pwd = input('请输入密码:').encode('utf-8')
result = hashlib.md5(pwd).hexdigest()
1
2
3
4
5
#加盐写法:
import hashlib
date = 'hahahah'
ojb = hashlib.md5((date+'123123123').encode('utf-8')).hexdigest()
print(ojb)

 

1
2
3
4
5
6
7
8
9
10
11
12
import hashlib
 
md5 = hashlib.md5()
md5.update('Hello'.encode())
print(md5.hexdigest())
 
md5 = hashlib.md5()
md5.update('He'.encode())
md5.update('llo'.encode())
print(md5.hexdigest())
 
#这两个结果是一样的。不过update多少次。只要数据不变,那么都是一样的

如果要避免撞库的行为,可以加盐将加密数值改为更加复杂的,这样破译起来更加不容易。 

1
2
3
4
5
6
7
8
9
import hashlib
 
def get_md5(data):
    obj = hashlib.md5('abclasjd;flasdkfhowheofwa123113'.encode('utf-8'))  #这里加盐
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()
    return result
val  = get_md5('123'#这里放入要加密的字符串文字。
print(val)

将大文件进行提取并使用hash取值方式:

1
2
3
4
5
6
7
8
9
10
11
12
import hashlib
 
def file_check(file_path):
    with open(file_path,mode='rb') as f1:
        shu256 = hashlib.sha256()
        while 1:
            content = f1.read(1024)
            if content:
                shu256.update(content)
            else:
                return shu256.hexdigest()
print(file_check('test.exe'))

案例:

说明:用户输入新建的用户名和密码,以MD5加密的形式存入文件中。再让用户输入用户名密码进行匹配。

 

hmac

可以简化生成秘钥的过程,在进行有效性检测时可以使用。

1
2
3
4
5
6
7
8
9
10
import os
import hmac
 
random_key = os.urandom(32)   #随机生成的一个32字节
keys = b'hahaha'   #key
 
h = hmac.new(keys,random_key,'md5').digest()  
print(h)
 
#b"\xd5w\xd2jr]\\]Qgh!\xff'h\xc7"

 

posted @   新兵蛋Z  阅读(288)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示