Python中hashlib模块有哪些具体应用场景?

2026-05-21 18:365阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计645个文字,预计阅读时间需要3分钟。

Python中hashlib模块有哪些具体应用场景?

前游戏 + hashlib摘要算法的模块可以将一个字符串数据类型的变量,转换成一个固定长度的、加密的字符串,字符串中的每个字符都是十六进制数。对于同一字符串,无论长度如何,其加密后的字符串都相同。

前戏

hashlib摘要算法的模块能够把一个字符串数据类型的变量,转换成一个定长的、密文的字符串,字符串里的每一个字符都是一个十六进制数字

对于同一个字符串,不管这个字符串有多长,只要是相同的,无论在任何环境下,多少次执行,在任何语言中,使用相同的算法、相同的手段得到的结果永远是相同的,只要不是相同的字符串,得到的结果一定不同

md5是一个算法,32位的字符串,每个字符都是一个十六进制

sha1也是一个算法,40位的字符串,每个字符都是一个十六进制

hashlib

import hashlib

m = hashlib.md5()
m.update('hello卧槽'.encode(encoding=('utf-8')))
print(m.hexdigest())
m.update(b'kitty')
print(m.hexdigest()) # =m.update(b'hello卧槽kitty')

结果:

37a7e55322e9c07f55b4a5f2d1cb4e37
4c2af0766bfd01846e7bb41d778202cb

import hashlib

s = 'zouzou123'
md5_obj = hashlib.md5() # 实例化一个md5对象
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest() # 加密后的结果
print(res, type(res), len(res))

结果:

c018ac898b8c0cb16c623b0d1767d374 <class 'str'> 32

加盐

import hashlib

s = 'zouzou123'
md5_obj = hashlib.md5('任意的字符串作为盐'.encode('utf-8'))
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest()
print(res, len(res), type(res))

结果:

c5b76512a84656fcae4fe2b8c86dace8 32 <class 'str'>

动态加盐

import hashlib

username = input('username : ')
passwd = input('password : ')
md5obj = hashlib.md5(username.encode('utf-8'))
md5obj.update(passwd.encode('utf-8'))
print(md5obj.hexdigest())

sha1加密

sha1或者shaxx的加盐和不加盐的用法和md5的一样,只需要在实例化的时候把md5换成sha1或者shaxx

import hashlib

s = 'zouzou123'
md5_obj = hashlib.sha1()
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest()
print(res, type(res), len(res))

结果:

b4b4aeb89675cd505bbbc36288e9019f2a047341 <class 'str'> 40

文件的一致性校验

import hashlib

md5_obj = hashlib.md5()
with open('test', 'rb') as f:
md5_obj.update(f.read())
ret1 = md5_obj.hexdigest()

md5_obj = hashlib.md5()
with open('demo', 'rb') as f:
md5_obj.update(f.read())
ret2 = md5_obj.hexdigest()
print(ret1, ret2) # 看两个文件md5后的值是不是一样

md5字符串的拼接

import hashlib

md5_obj = hashlib.md5()
md5_obj.update('zouzou,abc,def'.encode('utf-8'))
print(md5_obj.hexdigest())

md5_obj = hashlib.md5()
md5_obj.update('zouzou,'.encode('utf-8'))
md5_obj.update('abc,'.encode('utf-8'))
md5_obj.update('def'.encode('utf-8'))
print(md5_obj.hexdigest())

结果:

58f4cfbd8cd4b57f25a56cea403de1bb
58f4cfbd8cd4b57f25a56cea403de1bb

实例化了两次,如果第二次没实例化,则会把上面的字符串+到前面在进行md5



Python中hashlib模块有哪些具体应用场景?

本文共计645个文字,预计阅读时间需要3分钟。

Python中hashlib模块有哪些具体应用场景?

前游戏 + hashlib摘要算法的模块可以将一个字符串数据类型的变量,转换成一个固定长度的、加密的字符串,字符串中的每个字符都是十六进制数。对于同一字符串,无论长度如何,其加密后的字符串都相同。

前戏

hashlib摘要算法的模块能够把一个字符串数据类型的变量,转换成一个定长的、密文的字符串,字符串里的每一个字符都是一个十六进制数字

对于同一个字符串,不管这个字符串有多长,只要是相同的,无论在任何环境下,多少次执行,在任何语言中,使用相同的算法、相同的手段得到的结果永远是相同的,只要不是相同的字符串,得到的结果一定不同

md5是一个算法,32位的字符串,每个字符都是一个十六进制

sha1也是一个算法,40位的字符串,每个字符都是一个十六进制

hashlib

import hashlib

m = hashlib.md5()
m.update('hello卧槽'.encode(encoding=('utf-8')))
print(m.hexdigest())
m.update(b'kitty')
print(m.hexdigest()) # =m.update(b'hello卧槽kitty')

结果:

37a7e55322e9c07f55b4a5f2d1cb4e37
4c2af0766bfd01846e7bb41d778202cb

import hashlib

s = 'zouzou123'
md5_obj = hashlib.md5() # 实例化一个md5对象
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest() # 加密后的结果
print(res, type(res), len(res))

结果:

c018ac898b8c0cb16c623b0d1767d374 <class 'str'> 32

加盐

import hashlib

s = 'zouzou123'
md5_obj = hashlib.md5('任意的字符串作为盐'.encode('utf-8'))
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest()
print(res, len(res), type(res))

结果:

c5b76512a84656fcae4fe2b8c86dace8 32 <class 'str'>

动态加盐

import hashlib

username = input('username : ')
passwd = input('password : ')
md5obj = hashlib.md5(username.encode('utf-8'))
md5obj.update(passwd.encode('utf-8'))
print(md5obj.hexdigest())

sha1加密

sha1或者shaxx的加盐和不加盐的用法和md5的一样,只需要在实例化的时候把md5换成sha1或者shaxx

import hashlib

s = 'zouzou123'
md5_obj = hashlib.sha1()
md5_obj.update(s.encode('utf-8'))
res = md5_obj.hexdigest()
print(res, type(res), len(res))

结果:

b4b4aeb89675cd505bbbc36288e9019f2a047341 <class 'str'> 40

文件的一致性校验

import hashlib

md5_obj = hashlib.md5()
with open('test', 'rb') as f:
md5_obj.update(f.read())
ret1 = md5_obj.hexdigest()

md5_obj = hashlib.md5()
with open('demo', 'rb') as f:
md5_obj.update(f.read())
ret2 = md5_obj.hexdigest()
print(ret1, ret2) # 看两个文件md5后的值是不是一样

md5字符串的拼接

import hashlib

md5_obj = hashlib.md5()
md5_obj.update('zouzou,abc,def'.encode('utf-8'))
print(md5_obj.hexdigest())

md5_obj = hashlib.md5()
md5_obj.update('zouzou,'.encode('utf-8'))
md5_obj.update('abc,'.encode('utf-8'))
md5_obj.update('def'.encode('utf-8'))
print(md5_obj.hexdigest())

结果:

58f4cfbd8cd4b57f25a56cea403de1bb
58f4cfbd8cd4b57f25a56cea403de1bb

实例化了两次,如果第二次没实例化,则会把上面的字符串+到前面在进行md5



Python中hashlib模块有哪些具体应用场景?