哈希字符串大小

syn*_*tic 8 python sha hmac

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

self.password = hmac.new(security_key, raw_password, sha1).hexdigest()
Run Code Online (Sandbox Code Playgroud)

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

Y.H*_*ong 5

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