我正在將服務從Python 2.7遷移到使用RSA加密/解密與另一服務進行通信的Python 3.5。RSA簽名不同於rsa模塊和m2crypto生成
的Python(V2.7)m2crypto(0.25.1)<正確的簽名>
key = M2Crypto.RSA.load_key(private_key)
digest = hashlib.sha1(bytes(cipher_text, encoding="UTF-8")).hexdigest()
signature = hexlify(key.private_encrypt(digest, M2Crypto.RSA.pkcs1_padding))
的Python(V3.5)RSA(v3.4.2)
pri_key = rsa.PrivateKey.load_pkcs1(private_key)
signature = hexlify(rsa.sign(cipher_text.encode(), pri_key, "SHA-1"))
以上代碼產生的簽名是不同的。這些軟件包有什麼區別?
但是如果第二個服務接受從m2crypto代碼生成的簽名會怎麼樣?在那種情況下我應該怎麼做? – infiQuanta
如果你擁有這項服務,我建議你相應地修改它。如果這是不可能的,我想你別無選擇,只能繼續使用'private_encrypt' – pedrofb
替代選項是幫助我完成https://gitlab.com/m2crypto/m2crypto/merge_requests/65並且您不必移植出M2Crypto;)。不過,我現在正在爲OpenSSL 1.1.0提供支持,因此預計該分支機構的主要重組。 – mcepl