Pourquoi PyCrypto n'utilise-t-il pas l'IV par défaut?
Je suis à essayer de comprendre pourquoi mon client Python et Ruby le serveur ont un différend sur la façon de crypter les données. La seule différence que je vois dans le code Ruby et mon code, c'est qu'ils ne sont pas en spécifiant le Vecteur d'Initialisation, donc de revenir à la valeur par défaut de tous les \x0 est
Lorsque j'essaie d'instancier PyCrypto sans le iv, il me donne une erreur. Voici un exemple:
from Crypto.Cipher import AES
test = "Very, very confidential data"
key = b'Thirty Two Byte key, made Beef y'
gryp = AES.new(key, AES.MODE_CBC)
(Cet exemple est essentiellement le code d'exemple de la PyCrypto docs sans préciser le IV) Les docs disent w/r/t, le IV " Il est facultatif et s'il est absent, il sera donné une valeur par défaut de tous les zéros." Cependant, je reçois le message d'erreur "ValueError: IV doit être de 16 octets de long".
Afin que je puisse spécifier le IV, qui n'est pas le problème de pré soi, mais je suis en train de comprendre que si il pense qu'il ne peut pas utiliser la valeur par défaut, si il y a autre chose de mal avec la façon dont je suis l'aide de la bibliothèque.
source d'informationauteur zenWeasel
Vous devez vous connecter pour publier un commentaire.
Ce qui semble être une erreur dans la documentation de classe pour Pycrypto de AEScomme la mise en œuvre AES a été modifiée de sorte que le IV est pas facultatif pour ceux modes besoin d'un (c'est à dire que vous aurez à passer de 16 octets de zéros vous-même, si c'est comme vous voulez le faire).
Voir ce rapport de bug pour le même problème où quelqu'un n'a pas de spécifier un IV et leva les documents en ligne. Il y a un changement qui exige explicitement la IV et, essentiellement, personne n'a mis à jour les documents en ligne pour en tenir compte. La classe de documents dans la Pycrypto de la source ont été mis à jour, mais la documentation en ligne doit être régénéré pour en tenir compte.
La nouvelle documentation de la source unis:
À la place de l'ancienne version du
La mise à jour de l'exemple dans la source, qui précise iv, est:
ici est une application qui fonctionne pour moi avec quelques corrections: