Эквивалентный вызов PHP openssl_encrypt () в Node.js? [Дубликат]

Не слушайте этих парней. Вы действительно можете анализировать контекстно-свободные грамматики с регулярным выражением, если вы разбиваете задачу на более мелкие части. Вы можете сгенерировать правильный шаблон с помощью скрипта, который выполняет каждый из этих действий, чтобы:

  1. Решить проблему остановки.
  2. Построить круг (имитировать «линейку и компас» метод для этого).
  3. Разработайте проблему с продавцом в O (log n).
  4. Шаблон будет довольно большим, поэтому убедитесь, что у вас есть алгоритм, который без потерь сжимает случайные данные.
  5. Почти там - просто разделите все это к нулю. Easy-peasy.

Я еще не выяснил последнюю часть, но я знаю, что приближаюсь. Мой код продолжает бросать CthulhuRlyehWgahnaglFhtagnException в последнее время, поэтому я собираюсь передать его на VB 6 и использовать On Error Resume Next. Я обновлю код, как только я исследую эту странную дверь, которая только что открылась в стене. Хмм.

P.S. Пьер де Ферма также выяснил, как это сделать, но край, который он писал, был недостаточно большим для кода.

1
задан Sergio David Romero 16 January 2017 в 15:33
поделиться

1 ответ

Предполагая, что вы будете исправлять такие вещи, как пустой IV & amp; что это доказательство концепции, ваш код выходит из строя, потому что:

  1. Вы не используете прописку на Java, вам нужно использовать то же самое в JS
  2. . Вы вручную набираете нули в Java, вам нужно сделать то же самое в JS
  3. . Вы base64 декодируете ключ, но не его base64 (его шестнадцатеричная строка байтов)
  4. Java IV представляет собой массив нулей но в JS вы используете пробелы (и ошибочно относитесь к нему как base64).

Чтобы дублировать вывод в JS:

CryptoJS.pad.NoPadding = {pad: function(){}, unpad: function(){}};

var text = "My Secret text\0\0";
var key = CryptoJS.enc.Hex.parse("253D3FB468A0E24677C28A624BE0F939");
var iv  = CryptoJS.enc.Hex.parse("00000000000000000000000000000000");

var encrypted = CryptoJS.AES.encrypt(text, key, {iv: iv, padding: CryptoJS.pad.NoPadding});
console.log(encrypted.toString());

Для:

< blockquote>

7StScX3LnPUly / VNzBes0w ==

6
ответ дан Alex K. 16 August 2018 в 10:21
поделиться
  • 1
    Минуты поздно. Он забрал меня на заказ. – Tamas Hegedus 16 January 2017 в 15:48
  • 2
    Кроме того, я хотел бы указать, что пользовательская функция заполнения ошибочна, поскольку при вызове getBytes нескольких мест используется различная кодировка. – Tamas Hegedus 16 January 2017 в 15:49
  • 3
    @Alex K. Это выглядит довольно хорошо! У меня есть одно сомнение! Как я могу снова расшифровать это? !! Благодаря! Я попытался: var decrypt = CryptoJS.AES.decrypt(encrypted, key, {iv: iv}); – Sergio David Romero 16 January 2017 в 17:06
  • 4
    Наконец используется; var decrypted = CryptoJS.AES.decrypt(text.toString(), key, {iv: iv}); console.log(decrypted.toString(CryptoJS.enc.Utf8)); – Sergio David Romero 16 January 2017 в 23:12
Другие вопросы по тегам:

Похожие вопросы: