Как дополнить короткие строки для использования в качестве ключа AES?
У меня есть 5 разных строк, которые я хочу использовать в качестве ключа. Они есть:
asuspcgame, dragonZ, whiterice, ball, document
Я хочу выполнить шифрование с использованием EVP OpenSSL, например: https://www.openssl.org/docs/man1.0.2/crypto/EVP_EncryptInit.html
Однако я понял, что в примере используется ключ фиксированного размера (16 символов для AES_128).
unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
EVP_EncryptInit_ex(&ctx, EVP_idea_cbc(), NULL, key, iv);
У меня вопрос: как сделать так, чтобы мои строки всегда имели фиксированный размер 16 символов?
Я не видел ни одной функции из EVP, которая могла бы заставить мои строки стать ключом фиксированного размера.
1 ответ
Не используйте строки в качестве ключей шифрования, используйте функцию получения пароля, такую как PBKDF2, с количеством циклов, таким образом, что функция занимает ~100 мс. Это даст вывод байтов для использования в качестве ключа.
Для IV, использующего криптографический генератор псевдослучайных чисел и префикс зашифрованных данных с IV, нет необходимости хранить IV в секрете.
Или еще лучше, используйте RNCryptor; он делает все это для вас и добавляет шифрование аутентификации, управления версиями и является кроссплатформенным.