【发布时间】:2019-08-26 15:39:12
【问题描述】:
我已经尝试了几天来验证一些使用 python 中的私钥签名的消息。请注意,该消息已使用 Ruby 进行签名。
当我在 python 中签署相同的消息时,我可以验证它没有问题。请注意,我已经验证了哈希是相同的。
Python 代码:
string_to_encrypt = b"aaaaabbbbbaaaaabbbbbaaaaabbbbbCC"
sha1 = SHA.new()
sha1.update(string_to_encrypt)
# load private key
pkey = OpenSSL.crypto.load_privatekey(OpenSSL.crypto.FILETYPE_PEM, open('./license.pem', 'rb').read())
sign_ssl = OpenSSL.crypto.sign(pkey, sha1.digest(), 'RSA-SHA1')
b64_ssl = base64.b64encode(sign_ssl)
鲁比:
string_to_encrypt = "aaaaabbbbbaaaaabbbbbaaaaabbbbbCC"
sha1 = Digest::SHA1.digest(string_to_encrypt)
#sign it
private_key_file = File.join(File.dirname(__FILE__), 'license.pem')
rsa = OpenSSL::PKey::RSA.new(File.read(private_key_file))
signed_key = rsa.private_encrypt(sha1)
#update the license string with it
x = Base64.strict_encode64(signed_key)
我希望 b64_ssl 和 x 包含相同的值,但它们没有。有人可以向我解释一下我在那里缺少什么吗?
【问题讨论】:
标签: python ruby openssl cryptography