Comment vérifier dans pycrypto signature créé par openssl?
J'ai créé de clés publique/privée dans openssl, et a signé quelques données:
openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -out public.pem -outform PEM -pubout
echo 'data to sign' > data.txt
openssl dgst -md5 < data.txt > hash
openssl rsautl -sign -inkey private.pem -keyform PEM -in hash > signature
maintenant en python, je suis en train de vérifier ces données:
pubKey = open('public.pem').read()
data = open('data.txt').read()
signature = open('signature').read()
from Crypto import PublicKey
key = PublicKey.RSA.importKey(pubKey)
pub = key.publickey()
hash = MD5.new(data).hexdigest()
# here, hash is same, as contents of 'hash' file
print pub.verify(hash, signature) # <-- here
le problème, c'est que pub.verify
s'attend à ce second paramètre à un élément de la liste avec un certain grand nombre. Et je ne sais pas comment faire pour convertir des données binaires dans un fichier signature
de cet entier. Chaque exemple à propos de pycrypto montre la signature générée de pycrypto, et key.sign()
génère une signature correcte en forme (1832273432...2340234L, )
. Mais je ne sais pas comment utiliser externes signature.
Si cela est nécessaire, ci-dessous sont des informations supplémentaires, je ne sais pas exactement comment l'interpréter:
Brève information technique:
- Format de signature numérique: PKCS#7 “Signé de Données”
- Clé publique de procédure: DSS
- La longueur de la clé: 512 – 1024 bits
- Public exposant: 2 +1
- Clé publique format: X. 509 v3 certificat
- MD (Message Digest) algorithme: MD5 ou RIPEMD-160 16
OriginalL'auteur Ivan | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
La Crypto.Signature module est ce que vous voulez. À partir de la
Crypto.Signature.PKCS1_v1_5
documentation:OriginalL'auteur univerio
J'ai eu le même problème et voici des exemples pour les deux, la génération et la vérification avec openssl et python. Espérons que cela aide quelqu'un...
Bash:
Python:
Après un peu plus de lecture que j'ai appris (https://en.wikipedia.org/wiki/PKCS_1) que PKCS1_PSS est le nouveau régime qui devrait être utilisé pour créer des signatures.
Les deux scripts besoin de quelques changements:
Bash:
Python:
OriginalL'auteur the2nd
Voici la solution.
OriginalL'auteur Olivier
Ce post vous donne la meilleure réponse.
Comment vérifiez-vous un RSA SHA1 signature en Python?
pycrypto n'a pas pu vérifier une signature créée par OpenSSL. Vous pouvez essayer de M2Crypto.
OriginalL'auteur Churix