PyCrypto - AES - Chiffrer du texte avec des caractères spéciaux
[TiDi]
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
-
[TiDi] Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
[TiDi] Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'utilise la bliothèque PyCrypto pour chiffrer du texte avec AES :
Ces deux fonctions fonctionnent très bien avec des clés et textes sans accent mais pour tous les caractères spéciaux j'ai une erreur :
Si la clé contient des accents :
Si le texte contient des accents :
En fait c'est les memes erreurs qui sont relevées si on ne traite pas les données utilisateurs ... sauf que je les ais traitées, ça marche très bien sans accent
Comment faire pour chiffrer du texte avec tous les caractères UTF-8 ?
Je voudrais que le chiffrement fonctionne avec tous les caractères présent dans un fichier avec un objet enregistré avec Pickle
Merci de votre aide
J'utilise la bliothèque PyCrypto pour chiffrer du texte avec AES :
from Crypto.Cipher import AES def _SysChiffre(sCle, sTexte): # Vérification des données utilisateurs if len(sCle) == 0: return 1 if len(sTexte) == 0: return 1 # Traitement des données utilisateurs if len(sTexte) % 16 != 0: iN = 16 - (len(sTexte) % 16) for i in range(0, iN): sTexte += "\0" if len(sCle) != 16 or len(sCle) != 24 or len(sCle) != 32: if len(sCle) < 16: iN = 16 - len(sCle) for i in range(0, iN): sCle += "\0" elif len(sCle) > 16 and len(sCle) < 24: iN = 24 - len(sCle) for i in range(0, iN): sCle += "\0" elif len(sCle) > 24 and len(sCle) < 32: iN = 32 - len(sCle) for i in range(0, iN): sCle += "\0" else: return 1 # Chiffrement oAES = AES.new(sCle, AES.MODE_ECB) sTexteC = oAES.encrypt(sTexte) return sTexteC def _SysDechiffre(sCle, sTexte): # Vérification des données utilisateurs if len(sCle) == 0: return 1 if len(sTexte) == 0: return 1 # Traitement des données utilisateurs if len(sCle) != 16 or len(sCle) != 24 or len(sCle) != 32: if len(sCle) < 16: iN = 16 - len(sCle) for i in range(0, iN): sCle += "\0" elif len(sCle) > 16 and len(sCle) < 24: iN = 24 - len(sCle) for i in range(0, iN): sCle += "\0" elif len(sCle) > 24 and len(sCle) < 32: iN = 32 - len(sCle) for i in range(0, iN): sCle += "\0" # Déchiffrement oAES = AES.new(sCle, AES.MODE_ECB) sTexteD = oAES.decrypt(sTexte).replace(b"\0", b"") return sTexteD
Ces deux fonctions fonctionnent très bien avec des clés et textes sans accent mais pour tous les caractères spéciaux j'ai une erreur :
Si la clé contient des accents :
ValueError : AES key must be either 16, 24, or 32 bytes long
Si le texte contient des accents :
ValueError : Input strings must be a multiple of 16 in length
En fait c'est les memes erreurs qui sont relevées si on ne traite pas les données utilisateurs ... sauf que je les ais traitées, ça marche très bien sans accent
Comment faire pour chiffrer du texte avec tous les caractères UTF-8 ?
Je voudrais que le chiffrement fonctionne avec tous les caractères présent dans un fichier avec un objet enregistré avec Pickle
Merci de votre aide
A voir également:
- PyCrypto - AES - Chiffrer du texte avec des caractères spéciaux
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Caractères ascii - Guide
2 réponses
Je suppose que cela provien du codage des caractères non ASCII sur plus d'un octet en UTF-8, d'où l'erreur.
[TiDi]
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
262
Ah daccord donc faudrait que pour le nombre d'octet en plus par caractère j'enlève un caractère null dans la partie traitement des données utilisateurs ou il y a une autre solution ? J'ai essayé avec la fonction encode() mais ça me retourne toujours les mêmes erreurs