如何获取哈希公钥的值(PyKCS11)

时间:2018-01-26 23:01:31

标签: cryptography smartcard hashlib

在使用PyKCS11时,我从智能卡中提取了一个公钥。现在,我需要使用sha256散列该密钥。但是,公钥对象包含许多值:

CKA_ALWAYS_SENSITIVE: True
CKA_CLASS: CKO_PUBLIC_KEY
CKA_DECRYPT: False
CKA_DERIVE: False
CKA_ENCRYPT: False
(...)
CKA_KEY_TYPE: CKK_RSA
CKA_MODIFIABLE: False
CKA_MODULUS: (200, 163, 157, 146, 3, (...))

要散列密钥(使用hashlib),只需要其中一个属性(它不接受迭代)。

我应该使用什么属性?我在考虑CK_VALUE或CK_MODULUS,但PyKCS11上的文档并没有明确说明哪一个是正确的。

由于

1 个答案:

答案 0 :(得分:1)

您需要散列的内容取决于您的需求。

通常,模数是散列的,而不是整个键的编码。散列模数将导致公钥和私钥的值相同,以便您可以将两者标识为来自同一对。结果或结果最左边的字节通常用作键检查值或KCV。

每个密钥对的模数应该是唯一的。如果不是你的随机数发生器可能已损坏或播种不好(如果你生成多个键,检查这个可能不会有害)。因此,模数上的散列将唯一地标识您的公钥,即使指数未经过哈希处理。