Почему каждый раз, когда я запускаю шифрование с помощью simple-encryptor npm, выводится разница - PullRequest
0 голосов
/ 01 июня 2018

Пожалуйста, помогите мне решить эту проблему.

var key = 'real secret keys should be long and random';

// Create an encryptor:
var encryptor = require('simple-encryptor')(key);

var encrypted = encryptor.encrypt('testing');
// Should print gibberish:
console.log('encrypted: %s', encrypted);

Я использую библиотеку: "simple-encryptor" в "NPM", но каждый раз, когда я запускаю функцию "encrypt", она выдаст результат разницы.

Пример:1-е: «4792f3eacff628801005f14f1bc25ba0353… 3e969662c4i / It97adse8M + 1tmRHnYCQ ==»2-й: «6c576df521df45cc48ffe594fbe13084353… 66e3552bdaLoAV3rortuDbJYox1 + lVWQ ==»и так далее.(Вы можете запустить пример кода на: https://npm.runkit.com/simple-encryptor)

Поэтому: когда я сохраняю данные в локальный и возвращаюсь, я не могу расшифровать эти данные.

Почему результат шифрованияотличаются каждый раз, когда я бегу?Как расшифровать данные в этом случае?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

По умолчанию simple-encryptor будет использовать encrypt-then-mac с AES-256 и SHA-256 HMAC.Их документы говорят:

Уникальный IV за вызов, поэтому никакие два вызова не должны возвращать один и тот же результат для одного и того же ввода

Для расшифровки зашифрованных данных, используйте encryptor.decrypt(encrypted);.Вы можете проверить это на следующем простом примере:

var encryptor = require("simple-encryptor")("somekey234567884456753456");

var encrypted = encryptor.encrypt('testing');

console.log(encrypted);

var decrypted = encryptor.decrypt(encrypted);

console.log(decrypted);
0 голосов
/ 01 июня 2018

Большинство алгоритмов шифрования требуют вектора инициализации (IV).Сам IV не чувствителен и обычно сохраняется вместе с выходным зашифрованным текстом.В некоторых случаях библиотека будет обрабатывать это для вас и просто включать его как часть выходных данных.

Предположительно, библиотека генерирует случайный IV, чтобы защитить вас от проблем из-за повторного использования ключа.Этот случайно сгенерированный IV приведет к тому, что результат будет отличаться при каждом запуске скрипта.

...