Maison >développement back-end >Golang >Pourquoi Go et Pycrypto produisent-ils des résultats de chiffrement AES-CFB différents ?

Pourquoi Go et Pycrypto produisent-ils des résultats de chiffrement AES-CFB différents ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 11:11:10226parcourir

Why Do Go and Pycrypto Produce Different AES-CFB Encryption Results?

Résultats de cryptage AES-CFB incohérents entre Go et Pycrypto

En utilisant le cryptage AES-CFB, des résultats variables sont obtenus lors de la comparaison entre Go et Pycrypto . Pour étudier cette différence, nous analysons les exemples de code fournis.

En Python, Crypto.Cipher.AES utilise MODE_CFB avec un vecteur initial (IV) explicitement spécifié. À l'inverse, dans Go, aes.NewCipher nécessite la création explicite d'un chiffrement par bloc AES et l'instanciation ultérieure de CFBEncrypter ou CFBDecrypter avec le IV souhaité.

Une distinction essentielle entre les deux implémentations réside dans leur traitement de la taille des segments. Pycrypto fonctionne sur des segments de 8 bits, appelés CFB8, tandis que Go utilise des segments de 16 bits par défaut. Cette différence conduit à la divergence observée dans les résultats de chiffrement.

Adaptation de Go à l'approche CFB8 de Python

Pour permettre à Go de déchiffrer le texte chiffré par Pycrypto avec les paramètres CFB8, la source le code du CFBDecrypter de Go peut être modifié. Plus précisément, la méthode XORKeyStream peut être adaptée pour gérer des segments de 8 bits.

Cette modification permettrait à Go de déchiffrer le texte chiffré à l'aide des paramètres AES-CFB8 spécifiques de Pycrypto, favorisant l'interopérabilité entre les deux langages dans la gestion des tâches de chiffrement et de décryptage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn