Je souhaite faire un programme ou je stocke un identifiant et un mot de passe crypté. Evidemment a un moment j'en ai besoin.
J'ai le bout de code pour obtenir le mot de passe et l'identifiant puis les décrypter:
import Crypto
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
#on charge les clés
with open('data/private.pem','r') as fk:
priv = fk.read()
fk.close()
with open('data/public.pem','r') as fp:
pub = fp.read()
fp.close()
privKey = RSA.importKey(priv)
pubKey = RSA.importKey(pub)
#on charge l'identifiant et le mot de passe
idsFile=open("data/id.txt",'r')
userId = idsFile.read()
idsFile.close()
idsFile=open("data/mdp.txt",'r')
userMdp = idsFile.read()
idsFile.close()
#on les convertis en bytes pour être décryptés
userId = bytes(userId, encoding="UTF-8")
userMdp = bytes(userMdp, encoding="UTF-8")
#on décrypte
decryptor = PKCS1_OAEP.new(privKey)
userId = decryptor.decrypt(userId)
userId = decryptor.decode('utf-8')
userMdp = decryptor.decrypt(userMdp)
userMdp = decryptor.decode('utf-8')
print(userId)
print(userMdp)
Cependant, j'obtiens l'erreur suivante:
Traceback (most recent call last):
File "C:\Users\x\Desktop\x\v.2.0\testcfdjghdf.py", line 28, in <module>
userId = decryptor.decrypt(userId)
File "C:\Users\x\AppData\Local\Programs\Python\Python39\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py", line 167, in decrypt
raise ValueError("Ciphertext with incorrect length.")
ValueError: Ciphertext with incorrect length.
J'avoue que je ne comprend pas du tout cette erreur...
Note qu'avec with open tu n'as pas besoin de close, le fichier est automatiquement fermé en sortie du bloc with.
Sinon c'est difficile de t'aider car on ne sait pas comment tu as généré les fichiers. Par ex es tu sûr qu'il faut encoder en utf-8 ? Pourquoi ne pas ouvrir directement les fichiers en mode binaire ?
Aide crypto
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.