我需要做的事情:
从表单中获取数据,使用Crypto(node-js)进行加密 将加密后的数据传递给Python,并使用PyCrypto解密它。 我选择使用AES加密。
以下是我的起步方式(我不会详细介绍我尝试过的所有方法):
我按照这个页面末尾的例子操作:
(这可能是javascript和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')
[...]
这很好地编码了我的字符串。
然后,我编写了python脚本来解密这个字符串,使用了PyCrypto的GitHub页面上的readme:
from Crypto.Cipher import AES
[...]
my_string = data_coming_from_rabbitmq
obj = AES.new('mykeywhatever', AES.MODE_CBC)
obj.decrypt(ciphertext)
[...]
显然这没起作用:在自述文件中有一个IV,但由于我在节点脚本中没有提供它,为什么我要在Python中提供一个呢?
经过进一步搜索,我了解到node的Crypto使用OpenSSL,而PyCrypto显然不使用。所以我研究了一下,并找到了这些页面:
所以事情变得复杂了,没有人使用相同的方法来解密数据,我迷失了方向,请求帮助。
答案就是我和我的同事想出来的(嗯,大部分是我的同事)。