Python生成字符串或文件的MD5和SHA256哈希值的方法

         Python哈希值的相关方法均包含在hashlib库中。hashlib库提供生成哈希值的基础方法,对于一般用途应该足够了。当然也可以进行自定义,在hashlib提供的方法的基础上,编写一些特殊需求的代码模块module。

        在hashlib库中,一般是先构造一个哈希生成器 -- generator,通过生成器的update方法传入比特数据,最后由digest或hexdigest方法产生哈希值。digest方法提供的是二进制的,hexdigest生成的是十六进制的字符串。

        生成字符串的哈希值,可通过字符串本身自带的方法转换为二进制数据:[str].encode('utf-8')。字符串自带的encode方法默认使用UTF-8编码集。

        文件的哈希值生成方法与字符串的类似。将文件以二进制的数据格式读取,赋值于变量,然后通过update方法传入生成器处理得出哈希值。

"""
@author: MR.N
@created: 2021/07/19 Mon. 20:35
@version: 1.0
@free

"""
import hashlib

# 生成字符串的MD5值
def md5(content=None):
    if content is None:
        return ''
    md5gen = hashlib.md5()
    md5gen.update(content.encode())
    md5code = md5gen.hexdigest()
    md5gen = None
    return md5code

# 生成文件的MD5值
def md5_file(content=None):
    if content is None:
        return ''
    md5gen = hashlib.md5()
    with open(content, 'wb') as fd:
        data = fd.read()
    md5gen.update(data)
    md5code = md5gen.hexdigest()
    md5gen = None
    return md5code

# 生成字符串的SHA256值
def sha256(content=None):
    if content is None:
        return ''
    sha256gen = hashlib.sha256()
    sha256gen.update(content.encode())
    sha256code = sha256gen.hexdigest()
    sha256gen = None
    return sha256code

# 生成文件的SHA256值
def sha256_file(content=None):
    if content is None:
        return ''
    sha256gen = hashlib.sha256()
    with open(content, 'wb') as fd:
        data = fd.read()
    sha256gen.update(data)
    sha256code = sha256gen.hexdigest()
    sha256gen = None
    return sha256code

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
sha256哈希函数是利用Python的hashlib库实现的。可以使用sha256()方法生成字符串文件哈希值。引用中给出了生成字符串文件哈希值的示例代码。 如果要生成字符串sha256哈希值,可以使用generate_sha256_hashCode()函数,将需要哈希的字符串作为参数传入。函数内部会对字符串进行编码,并使用sha256算法进行加密,最后返回哈希值。示例代码如下: ```python from hashlib import sha256 def generate_sha256_hashCode(plainText): plainTextBytes = plainText.encode('utf-8') encryptor = sha256() encryptor.update(plainTextBytes) hashCode = encryptor.hexdigest() return hashCode if __name__ == "__main__": print(generate_sha256_hashCode('123')) ``` 如果要生成文件sha256哈希值,可以使用相似的方法。首先使用open()函数打开文件,并读取文件内容。然后对文件内容进行编码,并使用sha256算法进行加密,最后返回哈希值。示例代码如下: ```python from hashlib import sha256 def generate_sha256_hashCode(filePath): with open(filePath, encoding="utf-8") as f: plainText = f.read() plainTextBytes = plainText.encode('utf-8') encryptor = sha256() encryptor.update(plainTextBytes) hashCode = encryptor.hexdigest() return hashCode if __name__ == "__main__": print(generate_sha256_hashCode('test.txt')) ``` 另外,如果想使用md5算法生成哈希值,可以使用类似的方法。可以先导入hashlib库,然后使用sha256()方法替换为md5()方法即可。引用中给出了使用md5生成哈希值的示例代码。 ```python import hashlib password = 'wotemo666' hash_password = hashlib.md5(password.encode("utf-8")).hexdigest() print(hash_password) ``` 总结来说,sha256哈希函数是通过使用hashlib库中的sha256()方法来实现的,可以生成字符串文件哈希值。而md5哈希函数可以使用hashlib库中的md5()方法来实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【Python】使用Python实现sha256md5等加密算法生成哈希值](https://blog.csdn.net/aidijava/article/details/127145370)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [用python的哈希函数对密码进行加密](https://blog.csdn.net/shr105/article/details/122799672)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laoyouzhazi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值