私は暗号化に非常に慣れていないので、この問題で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とOpenSSL1.0.0dを使用しており、Windows7で32ビットのPython27を使用してプログラミングしています。
よろしく、ファルコ