我对密码学非常陌生,并且在这个问题上停留了2天,希望您能帮助我。如何使用公钥(x509证书)取回签名字符串(例如md5哈希)
我尝试使用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位编程。
亲切的问候, Falko
从技术上讲,你不应该“解密”签名。你想做什么?如果您想验证签名,则以其他方式完成。 – abbot 2011-05-16 20:10:28