Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中创建sha1哈希_Python_Smartcard_Apdu_Pyscard - Fatal编程技术网

如何在python中创建sha1哈希

如何在python中创建sha1哈希,python,smartcard,apdu,pyscard,Python,Smartcard,Apdu,Pyscard,我的目标是在python中使用智能卡执行“哈希签名”。虽然使用了hashlib,但python中没有特定的SHA1或SHA256函数。 我的工作: hash_object = hashlib.sha1(b'HelWorld') pbHash = hash_object.hexdigest() 但是我得到的散列对象的长度是28,而我应该得到14或20,这样我就可以根据需要切换条件 switch ( dwHashLen ) { case 0x14: // SHA1 hash

我的目标是在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
}

感谢您的帮助。提前谢谢你

你实际上得到了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

哈希对象的长度是什么意思?你从哪里得到28分?SHA1的长度是40个字符。你说的
switch
case
是什么意思?这肯定不是python…SHA1摘要本身是20个字节-40个字符的十六进制编码。也许这就是这里的意思。sha256是32个字节(64个十六进制字符)。不确定应该是14-甚至md5也是16字节。请注意,这些是十六进制值,0x14是20,0x20是32,所以您希望的是二进制哈希,而不是十六进制编码的哈希。使用
.digest()
而不是
.hexdigest()
来获取二进制哈希值,而不是十六进制编码的哈希值。@domoarigato开关大小写在我的c代码中。我正在移植到python。