19

我的目标是在 python 中使用智能卡执行“哈希签名”。使用了 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
}

任何帮助表示赞赏。先感谢您

4

1 回答 1

33

你实际上得到了 40,在十六进制中是0x28. 将十六进制的哈希解码为 ASCII,如下所示

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

或者像Dan D建议digest的那样简单地使用而不是。hexdigest

于 2016-05-27T12:26:45.537 回答