Ces deux codes fournissent la même signature, qui devrait:signature m2crypto "algorithme"
code1:
from M2Crypto import RSA, EVP
import base64, hashlib
text = "some text"
pkey = EVP.load_key("mykey.pem") #"mykey.pem" was generated as: openssl genrsa -des3 -out mykey.pem 2048
pkey.sign_init()
pkey.sign_update(text)
signature = pkey.sign_final()
print base64.b64encode(signature)
code2:
pkey = RSA.load_key("mykey.pem")
signature = pkey.sign(hashlib.sha1(text).digest())
print base64.b64encode(signature)
Cependant, si je veux « imitez "l'algorithme de signature, c'est-à-dire le cryptage du résumé avec la clé privée, je reçois une signature différente, à savoir:
pkey = RSA.load_key("mykey.pem")
signature = pkey.private_encrypt(hashlib.sha1(text).digest(), RSA.pkcs1_padding)
print base64.b64encode(signature) #different from the two above
Pourriez-vous s'il vous plaît fournir quelques explications? Quel est le problème avec la dernière façon de signer?
Pouvez-vous également montrer vos importations? – Daenyth
Bien sûr, désolé, j'ai ajouté les importations – michal
FYI, je pense que [pycrypto] (http://www.dlitz.net/software/pycrypto/) est le [package crypto préféré] (http://stackoverflow.com/questions/1137874/recommended-python-cryptographic-module) pour Python ces jours-ci. – Keith