[Python] 如何生成字符串或者文件的md5哈希值?

什么是MD5哈希?

MD5哈希是一种广泛使用的加密算法,用于将数据(如文件、字符串等)转换为固定长度的哈希值。这个哈希值通常是128位的十六进制数字,可以用作数据的唯一标识符。由于MD5哈希是不可逆的,因此很难从哈希值中还原出原始数据。

MD5哈希最初是由美国国家安全局(NSA)设计的,用于加密和验证政府机密文件。现在,它已成为互联网上广泛使用的哈希算法之一,用于保护网站和应用程序的安全性和完整性。例如,当用户登录到一个网站时,网站服务器可以将用户的密码进行MD5哈希,然后将其与存储在数据库中的哈希值进行比较,以验证用户的身份。

Python的内置hashlib库

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格式。

生成文本或者文件MD5哈希值的源代码

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))

你可能感兴趣的:(python,哈希算法,python,md5)