Pourquoi faut-toutes les entrées AES être des multiples de 16 ans?
Je suis en utilisant le PyCrypto mise en œuvre de l'AES et je suis en train de chiffrer du texte (24 octets) à l'aide d'un 24 octets de la clé.
aes_ecb = AES.new('\x00'*24, AES.MODE_ECB)
aes_ecb.encrypt("123456"*4)
- Je obtenir cette étonnante erreur ValueError: Input strings must be a multiple of 16 in length
Alors, pourquoi est-ce que mon entrée doit être un multiple de 16 ans? Cela aurait plus de sens pour moi que l'entrée de la longueur de la chaîne doit être un multiple de la clé de ma taille, parce que cela permettrait de nice opérations bit à bit entre la clé et les blocs de texte en clair.
OriginalL'auteur Mark | 2013-07-21
Vous devez vous connecter pour publier un commentaire.
AES est un algorithme de chiffrement par bloc. Citation de la page de Wikipedia: “un algorithme de chiffrement par bloc est un algorithme déterministe d'exploitation sur une durée fixe et des groupes de bits”.
AES ne peut travailler qu'avec des blocs de 128 bits (16 caractères, comme vous l'avez remarqué).
Si votre apport peut avoir des longueurs d'autres qu'un multiple de 128, selon votre application, vous devez être extrêmement prudent lorsque vous manipulez rembourrage.
C'est l'entrée qui doit être un multiple de la taille de bloc, pas la clé. Le SVE permet keysizes de 128, 192 et 256. Le chiffrement d'un bloc n'est pas un simple XOR entre la touche et le bloc, c'est plus complexe et ne nécessite pas la taille d'un bloc à être la même que la taille de la clé.
OriginalL'auteur Pascal Cuoq
Veux juste ajouter des informations sur les mods des opérations
Oui, AES de 128 bits (16 octets) de chiffrement par bloc, avec de multiples possibilités de la longueur de la clé (128, 192, 256), mais la cause de ce texte rembourrage limitation (et d'erreur msg) est la BCE mode de fonctionnement. La BCE est la plus simple des modes de chiffrement. Je ne sais pas vos objectifs, de sorte que vais juste passer à la partie qui il ne fournit pas sérieux la confidentialité des messages.
CBC et CTR sont plus fréquentes et généralement approprié à utiliser et, dans le CTR de la mode vous n'avez pas besoin de 128 bits, la longueur du message.
Il est également texte chiffré le vol (CTS) méthode de la BCE et de la CBC modes.
Mais Cryptogramme de voler de la BCE mode nécessite que le texte soit plus d'un bloc de 128 bits.
OriginalL'auteur varren
Parce que le la taille de bloc est de 16 octets, la façon de gérer cela est de ajouter rembourrage lors du chiffrement.
OriginalL'auteur Esailija