2014-09-08 2 views
1

Почему 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 вопросы режима. В моем случае соль постоянна, и я переключился на другие режимы. Выход по-прежнему различается каждый раз.

ответ

2

initialization vector, используемый в режиме CBC, является случайным блоком, поэтому каждое шифрование будет отличаться. IV похож на соль, за исключением того, что при шифровании сообщения нет причин когда-либо указывать какой-либо конкретный IV для использования (всегда должен использоваться случайный IV). IV часто помещается перед первым блоком зашифрованного сообщения.

+0

CBC, CFB, CTR, OFB, ECB. Должны ли все эти режимы возвращать разные шифры? – user3081123

+0

ЕЦБ нет, но почти всегда используется неправильный режим, поскольку он не обеспечивает семантической безопасности. Если повторяются блоки в вашем текстовом сообщении, повторяются соответствующие блоки в зашифрованном тексте. (Утечка информации об открытом тексте любому, кто смотрит). См. Http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation –

+0

Спасибо, это помогло. – user3081123

Смежные вопросы