AES - Chiffrement avec Crypto (node-js) / décryptage avec Pycrypto (python)

Je suis en train d'écrire cette question + réponse parce que j'ai eu beaucoup de mal (peut-être en raison d'un manque d'expérience), s'est perdu dans de nombreux différents moyens de cryptage/décryptage des choses avec nœud ou python.

J'ai pensé que peut-être que mon cas peut aider les gens dans le futur.

Ce que je devais faire:

  • Obtenir les données à partir d'un formulaire, les chiffrer à l'aide de la Cryptographie (node-js)
  • Transmettre les données chiffrées en Python et la décrypter à l'aide de PyCrypto.

J'ai choisi d'utiliser le chiffrement AES.

Voici comment j'ai commencé (je ne vais pas aller par le biais de tout ce que j'ai essayé):

  • J'ai suivi l'exemple à la fin de cette page

    Qui donne dans mon cas:

    (cela pourrait être un très mauvais mélange entre javascript et coffeescript)

    crypto = require "crypto"
    [...]
    key = "mykeywhatever"
    cipher = crypto.createCipher('aes192', key)
    cipher.update('string i want to encode', 'binary', 'hex')
    encoded_string = cipher.final('hex')
    [...]

    Cela a fonctionné assez bien pour encoder ma chaîne.

  • Ensuite, j'ai écrit mon script python pour déchiffrer cette chaîne, en utilisant le fichier lisez-moi sur PyCrypto de la page github:
    from Crypto.Cipher import AES
    [...]
    my_string = data_coming_from_rabbitmq
    obj = AES.new('mykeywhatever', AES.MODE_CBC)
    obj.decrypt(ciphertext)
    [...]

    De toute évidence, cela n'a pas fonctionné: dans le readme il y a un IV, mais depuis je n'ai pas donné une dans le nœud de script, pourquoi devrais-je donner un dans le python?

Après plusieurs recherches sur google, j'ai appris que le nœud de la Crypto utilise OpenSSL, tandis que PyCrypto apparemment ne l'est pas. Alors j'ai regardé dans que et ont trouvé que ces pages:

Donc les choses se sont compliquées, personne n'est en train de faire la même chose pour déchiffrer les données, je me suis perdu, et demandé de l'aide.

La réponse est ce que mon collègue de travail et je suis venu avec (enfin surtout mon corworker).

source d'informationauteur nnaelle