私の目的は、Python でスマート カードを使用して「ハッシュ署名」を実行することです。 はhashlib
使用されていますが、Python には特定の SHA1 または SHA256 関数はありません。
私の仕事:
hash_object = hashlib.sha1(b'HelWorld')
pbHash = hash_object.hexdigest()
しかし、取得したハッシュオブジェクトの長さは28です。むしろ、次のように条件を切り替えることができるように、14または20を取得する必要があります。[1]
switch ( dwHashLen )
{
case 0x14: // SHA1 hash
// call scard transmit
case 0x20: // SHA256 hash
// ...
}
ご協力いただければ幸いです。よろしくお願いします。
[1] これは私が現在Pythonに移植しているCコードの一部です。
ベストアンサー1
実際には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
または単に代わりdigest
にhexdigest
ダン・D提案されました。