>>> d = md5.new()
>>> d.update('a').hexdigest()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'hexdigest'
这会起作用 -
>>> d = md5.new()
>>> d.update('a')
>>> d.hexdigest()
'0cc175b9c0f1b6a831c399e269772661'
是否有缩短python代码的解释?
答案 0 :(得分:6)
你可以这样做:
md5.new('a').hexdigest()
转述
new(arg)
返回一个新的md5对象。如果arg
存在,方法调用update(arg)
已成就。
但md5
已被弃用
请改用hashlib
。
编辑:
md5
也存在问题,因此根据您的目的,您可能希望使用更安全的哈希函数,例如: SHA-256:
import hashlib
hashlib.sha256('a').hexdigest()
请注意,SHA-256需要更长的时间来计算,所以如果你有时间限制,这可能不是最佳选择。
答案 1 :(得分:3)
你想要这个:
import hashlib
hashlib.md5('a').hexdigest()
注意:不要使用普通MD5来保证安全。
答案 2 :(得分:2)
好吧,因为update有“no”返回(Python中的默认返回= None),调用update(arg).<anything>
必须失败。有时库会将return self
作为方法的最后一行。如果是这种情况,您的第一个代码示例将起作用。
使用分号可以将所有代码放在一行:
d = md5.new(); d.update('a'); d.hexdigest()
但通常不鼓励。