URL: https://linuxfr.org/forums/programmationautre/posts/cryptojs-pycrypto-et-openssl-sont-dans-un-bateau Title: CryptoJS, PyCrypto et OpenSSL sont dans un bateau... Authors: Moonz Date: 2013年10月28日T16:24:20+01:00 License: CC By-SA Tags: Score: 2 Bonjour à tous, Je me suis mis en tête de passer un de mes programmes, écrit en Python, en application web (parce que c'est à la mode). Ce dernier utilise un poil AES, je dois donc réussir à déchiffrer avec Javascript mes données écrites avec Python. Évidemment, si j’écris sur les forums, c’est que je n’y arrive pas. À la place, je tombe sur un résultat plutôt « rigolo », voyez par vous même : key = "Fr+qgqTMOfNiB1N7Zkl6IBHwzW3b0FnnoE2jiRzpLv4=" (base64) key = "16bfaa82a4cc39f36207537b66497a2011f0cd6ddbd059e7a04da3891ce92efe" (hex) iv = "ACcbhcUMudd4j5M3mPlqYg==" (base64) iv = "00271b85c50cb9d7788f933798f96a62" (hex) plain = "test" Python: import base64 import Crypto.Cipher.AES key = "Fr+qgqTMOfNiB1N7Zkl6IBHwzW3b0FnnoE2jiRzpLv4=" iv = "ACcbhcUMudd4j5M3mPlqYg==" plain = "test" print base64.b64encode(Crypto.Cipher.AES.new(base64.b64decode(key), Crypto.Cipher.AES.MODE_CFB, base64.b64decode(iv)).encrypt(plain)) # result: 9G1IBw== OpenSSL: openssl enc -aes-256-cfb -e -a -K 16bfaa82a4cc39f36207537b66497a2011f0cd6ddbd059e7a04da3891ce92efe -iv 00271b85c50cb9d7788f933798f96a62 <<< test # result: 9CIFd3c= JavaScript (http://code.google.com/p/crypto-js/): var key = CryptoJS.enc.Base64.parse("Fr+qgqTMOfNiB1N7Zkl6IBHwzW3b0FnnoE2jiRzpLv4=") var iv = CryptoJS.enc.Base64.parse("ACcbhcUMudd4j5M3mPlqYg==") document.getElementsByTagName("textarea")[0].value = CryptoJS.enc.Base64.stringify(CryptoJS.AES.encrypt("test", key, {iv: iv, mode: CryptoJS.mode.CFB}).ciphertext); # result: 9CIFd3FW/bSnzs0Sn3ZPBA== Et oui : même clé, même IV, même algorithme, même mode (CFB, parce que la doc me dit que c’est le bien et que je suis un ignare dans le domaine, donc je suis bêtement la doc), et trois résultats différents ! Et bien évidemment, aucune implémentation n’arrive à déchiffrer le résultat des autres... Quelqu’un s’y connaissant un peu plus que moi saurait où je me suis loupé ?