我正在将服务从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