如何使用公共密钥(x509证书)取回已签名的字符串(例如md5哈希)
|
我对密码技术非常陌生,并且在此问题上停留了2天,希望您能为我提供帮助。
我尝试用X509证书的私钥签名md5摘要字符串。据我所知,这很好。
现在,我尝试使用该x509证书的公钥取回该字符串,但是我不知道如何执行此操作。
首先,我使用OpenSSL创建了x509证书和私钥文件:
openssl req -newkey rsa:1024 -nodes -x509 -days 365 -out signer.pem
这是我尝试的示例代码:
import M2Crypto
import hashlib
def empty_callback ():
return
# md5 hash of params
params = \"0045KIABCDEFG\"
m = hashlib.md5()
m.update(params)
md = m.digest()
print m.hexdigest()
M2Crypto.Rand.rand_seed (os.urandom (1024))
# sign md5 hash with private key
SignEVP = M2Crypto.EVP.load_key (\'privkey.pem\')
#Begin signing
SignEVP.sign_init ()
#Tell it to sign our string
SignEVP.sign_update (md)
#Get the final result
StringSignature = SignEVP.sign_final ()
#print the final result
print StringSignature.encode (\'base64\')
我得到了公用密钥,但是那时不知道如何使用。
objX509 = M2Crypto.X509.load_cert(\'signer.pem \')
PubKey = objX509.get_pubkey()
我只找到了如何验证签名字符串,但这不是我所需要的。
有没有一种方法可以使用signer.pem(公钥)取回原始md5摘要(md)?
我正在使用M2Cyrpto-0.21.1和OpenSSL 1.0.0d,并在Windows7上使用Python27(32位)进行编程。
亲切的问候,
法尔科
没有找到相关结果
已邀请:
1 个回复
苦诫
但是,我想这不会给您期望。 如果要提取使用上述代码签名的消息摘要,则必须对
中的ASN.1序列进行解码。您当然可以使用PyCrypto进行此操作,但是这又是为了什么呢?