MD5哈希是一种广泛使用的加密算法,用于将数据(如文件、字符串等)转换为固定长度的哈希值。这个哈希值通常是128位的十六进制数字,可以用作数据的唯一标识符。由于MD5哈希是不可逆的,因此很难从哈希值中还原出原始数据。
MD5哈希最初是由美国国家安全局(NSA)设计的,用于加密和验证政府机密文件。现在,它已成为互联网上广泛使用的哈希算法之一,用于保护网站和应用程序的安全性和完整性。例如,当用户登录到一个网站时,网站服务器可以将用户的密码进行MD5哈希,然后将其与存储在数据库中的哈希值进行比较,以验证用户的身份。
Python中的hashlib库提供了常见的哈希算法,如MD5、SHA1、SHA256等。这些算法可用于加密数据、验证数据的完整性和安全性等场景。
以下是使用hashlib库计算字符串的MD5哈希值的示例代码:
import hashlib
# 要计算哈希值的字符串
text = "Hello World!"
# 创建一个md5对象
md5 = hashlib.md5()
# 将字符串添加到md5对象中
md5.update(text.encode('utf-8'))
# 获取哈希值并将其转换为十六进制字符串
hash_value = md5.hexdigest()
print("MD5哈希值:", hash_value)
在这个例子中,将使用hashlib库创建一个md5对象,将要计算哈希值的字符串添加到该对象中,然后获取哈希值并将其转换为十六进制字符串。最后,将哈希值打印到控制台上。请注意,在将字符串添加到md5对象之前,需要将其编码为UTF-8格式。
import hashlib
import os.path
def get_text_md5(content: str, prefix_len=8):
m = hashlib.md5()
m.update(content.encode('utf-8'))
md5_str = m.hexdigest()
return md5_str[0:prefix_len]
def get_file_md5(file_path: str, prefix_len=8):
with open(file_path, mode='rb') as f:
data = f.read()
m = hashlib.md5()
m.update(data)
md5_str = m.hexdigest()
return md5_str[0:prefix_len]
if __name__ == '__main__':
print('------get_text_md5------')
print(get_text_md5('hello world', prefix_len=12))
print('------get_file_md5------')
py_file_path = os.path.abspath(__file__)
print(get_file_md5(py_file_path, prefix_len=12))