14.3. md5-MD5 消息摘要算法

从版本 2.5 开始不推荐使用:而是使用hashlib模块。

该模块实现了 RSA MD5 消息摘要算法的接口(另请参见 Internet RFC 1321)。它的用法非常简单:使用new()创建一个 md5 对象。现在,您可以使用update()方法为该对象提供任意字符串,并且随时可以请求它为馈送给该字符串的字符串的* digest *(一种 128 位校验和,又称“指纹”)。到目前为止,使用digest()方法。

例如,要获取字符串'Nobody inspects the spammish repetition'的摘要:

>>> import md5
>>> m = md5.new()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'

More condensed:

>>> md5.new("Nobody inspects the spammish repetition").digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'

以下值在模块中作为常量提供,并作为new()返回的 md5 对象的属性提供:

  • md5. digest_size
    • 结果摘要的大小(以字节为单位)。始终为16

md5 模块提供以下Function:

  • md5. new([* arg *])

    • 返回一个新的 md5 对象。如果存在* arg *,则进行方法调用update(arg)
  • md5. md5([* arg *])

    • 出于向后兼容的原因,这是new()函数的替代名称。

md5 对象具有以下方法:

  • md5. update(* arg *)

    • 用字符串* arg *更新 md5 对象。重复调用等效于将所有参数串联在一起的单个调用:m.update(a); m.update(b)等效于m.update(a+b)
  • md5. digest ( )

    • 返回到目前为止传递给update()方法的字符串的摘要。这是一个 16 字节的字符串,其中可能包含非 ASCII 字符,包括空字节。
  • md5. hexdigest ( )

    • digest()一样,摘要以字符串形式返回,长度为 32,仅包含十六进制数字。这可用于在电子邮件或其他非二进制环境中安全地交换值。
  • md5. copy ( )

    • 返回 md5 对象的副本(“克隆”)。这可用于有效地计算共享公共初始子字符串的字符串的摘要。

See also

  • Module sha

  • 实现安全哈希算法(SHA)的类似模块。 SHA 算法被认为是更安全的哈希。