2016-06-15 57 views

回答

8

“一个可选的第二个参数,如果为true,则返回长度为16的小散列,而不是普通的32个字符长的散列。

这是不正确的:第二个参数$raw_output指定输出是否应当是hexadecimal(十六进制)的编码或原始binary字符串。散列长度不会改变,而是编码字符串的长度。

import hashlib 

digest = hashlib.md5("asdf").digest() # 16 byte binary 
hexdigest = hashlib.md5("asdf").hexdigest() # 32 character hexadecimal 

第一个只能在代码中使用,不会呈现给用户,因为它将包含不可打印的字符。这就是为什么你应该总是使用hexdigest函数,如果你想向用户呈现散列。