python实现MD5加密

import hashlib


def generate_md5(str_data):
    byte_data = str_data.encode('utf-8')  # 由于update方法接收的是字节,所以对字符串进行转码
    md5 = hashlib.md5()  # 实例化对象
    md5.update(byte_data)  # 更新hash对象
    md5_value = md5.hexdigest()  # 获得16进制str类型的消息摘要,注意mad5.digest()返回bytes格式的消息摘要
    return md5_value

简化

import hashlib


def generate_md5(str_data):
    md5 = hashlib.md5()  # 实例化对象
    md5.update(str_data.encode('utf-8'))
    md5_value = md5.hexdigest()  # 更新hash对象
    return md5_value

注意点

hash.update(arg)
更新hash对象。连续的调用该方法相当于连续的追加更新。例如m.update(a); m.update(b)相当于m.update(a+b)。注意,当数据规模较大的时候,Python的GIL在此时会解锁,用于提高计算速度。
一定要理解update()的作用,由于消息摘要是只针对当前状态产生的,所以每一次update后,再次计算hexdigest()的值都会不一样。

hash.digest()
返回bytes格式的消息摘要

hash.hexdigest()
与digest方法类似,不过返回的是两倍长度的字符串对象,所有的字符都是十六进制的数字。通常用于邮件传输或非二进制环境中。通常我们比较摘要时,比较的就是这个值!

hash.copy()
返回一个hash对象的拷贝

posted @ 2021-05-17 21:51  NFTO  阅读(617)  评论(0)    收藏  举报