哈希字符串大小

时间:2012-04-02 09:35:42

标签: python hmac sha

在python中,我使用以下代码为用户密码创建哈希:

self.password = hmac.new(security_key, raw_password, sha1).hexdigest()

现在我想将此值保存到数据库中。什么尺寸必须是我的数据库列? 它似乎与digest_size属性有关,但不知道哪个对象或类具有此类属性。 sha1没有。

2 个答案:

答案 0 :(得分:5)

hmac的输出取决于它使用的散列算法。在您的情况下,它使用sha1,它始终根据RFC2104输出一个20字节长的字节字符串。调用hexdigest()会将字节字符串转换为可打印的十六进制格式。 1个字节= 2个十六进制数字,因此总共有40个十六进制字符。您可以安全地将数据库列设置为char(40)。

答案 1 :(得分:2)

sha-1哈希函数的输出长度为20个字符。 (根据RFC2104引用的hmac python module docs:“...... L哈希输出的字节长度(对于MD5,L = 16,对于SHA-1,L = 20)。”)

您还可以通过以下方式验证:

import hashlib;
H = hashlib.sha1("blahblah");
print(H.digest_size);