如何在python中创建sha1哈希

时间:2016-05-27 11:53:17

标签: python smartcard apdu pyscard

我的目标是在python中使用智能卡执行“Hashsigning”。有使用hashlib,但python中没有特定的SHA1或SHA256函数。 我的工作:

hash_object = hashlib.sha1(b'HelWorld')
pbHash = hash_object.hexdigest()

但是我得到的哈希对象的长度是28而不是我应该得到14或20,这样我就可以开启条件

 switch ( dwHashLen )
{
case 0x14: // SHA1 hash
             call scard transmit
case 0x20: // SHA256 hash
}

感谢任何帮助。提前谢谢

1 个答案:

答案 0 :(得分:3)

你实际上得到40,十六进制为0x28。将十六进制的散列解码为ASCII,如下所示

>>> import hashlib
>>> hash_object = hashlib.sha1(b'HelWorld')
>>> pbHash = hash_object.hexdigest()
>>> length = len(pbHash.decode("hex"))
>>> print length
20

或者只是使用digest代替hexdigest作为Dan D建议。