我對密碼學非常陌生,並且在這個問題上停留了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