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 を取得しています。これは 16 進数で です0x28。次のように、16 進数のハッシュを 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 に答える