Почему AES с такой же секретной фразой и сообщением каждый раз возвращает разные значения? Допустим, у нас есть одна соль для каждой функции PBKDF2 (я знаю, что это плохо, это просто пример). Скажем, мы вводим одну и ту же кодовую фразу каждый раз.Почему функция AES возвращает другое значение?
var salt = "5J07c/a7+2bf=15$56aQc75Ub55=60&0";
console.log(req.body.password);
console.log(salt);
var PBKDF2hash = crypto.PBKDF2(req.body.password, salt, { keySize: 256/32 });
console.log(PBKDF2hash.toString());
var AEScipher = crypto.AES.encrypt(req.body.password, PBKDF2hash);
console.log(AEScipher.toString());
В этом случае мы получаем тот же PBKDF2hash (как и ожидалось), но в любое время AES обеспечивает различную chipher.
zz
5J07c/a7+2bf=15$56aQc75Ub55=60&0
3949676666ed318087a52896be98dc80b0cad99f4b662d48565283f71a2ace80
U2FsdGVkX19O1pqgL+V6Chk8NdiJQhf15N1uEfYXgxw=
zz
5J07c/a7+2bf=15$56aQc75Ub55=60&0
3949676666ed318087a52896be98dc80b0cad99f4b662d48565283f71a2ace80
U2FsdGVkX1/C7GAmLJvfFAHyOYj7LKZI5278/ZoeA3M=
These ответы говорит, что это соль differrent и CBC вопросы режима. В моем случае соль постоянна, и я переключился на другие режимы. Выход по-прежнему различается каждый раз.
CBC, CFB, CTR, OFB, ECB. Должны ли все эти режимы возвращать разные шифры? – user3081123
ЕЦБ нет, но почти всегда используется неправильный режим, поскольку он не обеспечивает семантической безопасности. Если повторяются блоки в вашем текстовом сообщении, повторяются соответствующие блоки в зашифрованном тексте. (Утечка информации об открытом тексте любому, кто смотрит). См. Http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation –
Спасибо, это помогло. – user3081123