【发布时间】:2011-04-14 12:16:32
【问题描述】:
这两个代码提供相同的签名,这是预期的:
代码1:
from M2Crypto import RSA, EVP
import base64, hashlib
text = "some text"
pkey = EVP.load_key("mykey.pem") #"mykey.pem" was generated as: openssl genrsa -des3 -out mykey.pem 2048
pkey.sign_init()
pkey.sign_update(text)
signature = pkey.sign_final()
print base64.b64encode(signature)
代码2:
pkey = RSA.load_key("mykey.pem")
signature = pkey.sign(hashlib.sha1(text).digest())
print base64.b64encode(signature)
但是,如果我想“模仿”签名算法,即用私钥加密摘要,我会得到一个不同的签名,即:
pkey = RSA.load_key("mykey.pem")
signature = pkey.private_encrypt(hashlib.sha1(text).digest(), RSA.pkcs1_padding)
print base64.b64encode(signature) #different from the two above
你能解释一下吗?后一种签名方式有什么问题?
【问题讨论】:
-
你也能展示你的进口吗?
-
当然,抱歉,我添加了导入
-
仅供参考,我认为 pycrypto 现在是 Python 的 preferred crypto package。
标签: python digital-signature m2crypto