La sortie fait 48 octets, alors que votre programme produit 16 octets (qui est la longueur d'un bloc chiffré). Donc openssl s'attend à plus d'informations dans ce mode (en fait, il s'attend à obtenir un fichier produit par "openssl enc -e", qui donnera le bon format).
On peut cependant l'utiliser dans un mode plus brut :
"-k" va tenter de dériver une clef à partir de son argument mot de passe, alors que vous passiez une clef au chiffrement en Python. Pour passer la clef, il faut utiliser "-K", et passer un "-iv" puisque vous utilisez CBC.
Cependant, on ne saurait trop vous recommander de ne pas utiliser les primitives de chiffrement, comme AES-CBC. AES-CBC ne réalise qu'un chiffrement, et ne permet pas à lui seul une vérification d'intégrité. Il faut par exemple lui adjoindre un chiffrement haché (HMAC). Et cela ne suffit pas pour les transmissions réseaux. Attaques par rejeu etc. sont au programme.
Il est facile avec le chiffrement de se croire en sécurité, alors qu'il faut faire attention à de nombreuses choses, même en ne parlant que des aspects techniques. Utilisez des programmes (GnuPG (il sait réaliser des chiffrements symétriques)) ou des protocoles (SSL/TLS (TLS-PSK pour le chiffrement symétrique)) existants, plutôt que réinventer votre chiffrement. Sauf bien sûr, si c'est dans un but pédagogique.
# openssl
Posté par BFG . En réponse au message Chiffrement en python déchiffrement par openssl. Évalué à 7. Dernière modification le 07 février 2012 à 22:53.
Essayons de chiffrer avec openssl :
La sortie fait 48 octets, alors que votre programme produit 16 octets (qui est la longueur d'un bloc chiffré). Donc openssl s'attend à plus d'informations dans ce mode (en fait, il s'attend à obtenir un fichier produit par "openssl enc -e", qui donnera le bon format).
On peut cependant l'utiliser dans un mode plus brut :
On obtient donc le bon résultat.
"-k" va tenter de dériver une clef à partir de son argument mot de passe, alors que vous passiez une clef au chiffrement en Python. Pour passer la clef, il faut utiliser "-K", et passer un "-iv" puisque vous utilisez CBC.
Cependant, on ne saurait trop vous recommander de ne pas utiliser les primitives de chiffrement, comme AES-CBC. AES-CBC ne réalise qu'un chiffrement, et ne permet pas à lui seul une vérification d'intégrité. Il faut par exemple lui adjoindre un chiffrement haché (HMAC). Et cela ne suffit pas pour les transmissions réseaux. Attaques par rejeu etc. sont au programme.
Il est facile avec le chiffrement de se croire en sécurité, alors qu'il faut faire attention à de nombreuses choses, même en ne parlant que des aspects techniques. Utilisez des programmes (GnuPG (il sait réaliser des chiffrements symétriques)) ou des protocoles (SSL/TLS (TLS-PSK pour le chiffrement symétrique)) existants, plutôt que réinventer votre chiffrement. Sauf bien sûr, si c'est dans un but pédagogique.
Un article intéressant à ce sujet (bien qu'un peu trop distrayant, et qu'un passage ne soit pas clair du tout, nécessitant de lire Wikipedia à côté) : If You're Typing The Letters A-E-S Into Your Code, You're Doing It Wrong.