Как расшифровать поле, отправленное с клиента на сервер Node, с помощью CryptoJS?

Я пытаюсь адаптировать следующее решение в свое приложение Node для расшифровки поля, отправленного из клиентского браузера через POST:

Как расшифровать с помощью CryptoJS с помощью AES?

Кажется, что мы ходим по кругу в поисках значений, которые будут совпадать в консоли. Значения для шифрования «hello» совпадают как с сервером, так и с клиента (отправка «hello», однако теперь ни для одного из них не отображается значение дешифрования.

Код на стороне сервера в маршруте POST для узла:

var ENC_KEY = "c2VjcmV0"; //'secret'
app.post('/hello', function (req, res) {
    console.log('POST /hello');

    var key = CryptoJS.enc.Base64.parse(ENC_KEY);

    console.log('key: ' + key);


    console.log('client msg ("hello"): ' + req.body.msg_hello);

    var encrypted = CryptoJS.AES.encrypt("hello", key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });

    console.log('server msg "hello" encrypted to: ' + encrypted);

    var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });

    console.log('server msg decrypted: ' + hex2a(decrypted));

    var decryptedClient = CryptoJS.AES.decrypt(req.body.msg_hello, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });



    console.log('client msg decrypted: ' + hex2a(decryptedClient));

    res.end(JSON.stringify('{ response: "response" }'));
});

Любая помощь приветствуется!


person user3197788    schedule 27.11.2014    source источник
comment
Если вы используете узел, почему бы не использовать встроенный модуль шифрования? Он будет работать быстрее, и я думаю, вы найдете для него больше примеров.   -  person mscdex    schedule 27.11.2014
comment
не знаю, если это ошибки копирования / вставки, но в строке: var decryptKey = ENC_KEY отсутствует ;. Кроме того, CryptoJS.AES.decrypt и CryptoJS.AES.encrypt должны использовать один и тот же ключ .. в приведенном выше коде ключ! = ENC_KEY   -  person neildaemond    schedule 27.11.2014
comment
@neildaemond Я исправил. Извините, пытался что-то сделать, пока искал здесь!   -  person user3197788    schedule 27.11.2014
comment
@mscdex Я еще не прочитал все документы еще по криптографии узлов, но мне нравятся опции, доступные в CryptoJS, такие как возможность использовать разные режимы, заполнение и т. д., однако сейчас мы рассмотрим это глубже!   -  person user3197788    schedule 27.11.2014
comment
Встроенный модуль шифрования также позволяет вам выбирать режимы (это часть имени шифра, например aes-128-ctr или aes-128-ecb) и включать / выключать заполнение PKCS и т. Д. Он также предоставляет интерфейсы потоков узлов, чтобы вы могли подключить их к конвейеру. с другими потоками.   -  person mscdex    schedule 27.11.2014
comment
@mscdex в настоящее время пытается достичь эквивалента во встроенном модуле шифрования! Надеюсь, у меня скоро будет решение, которое я опубликую   -  person user3197788    schedule 27.11.2014