Ключ AES и IV для симметричного шифрования - это просто набор случайных байтов.Таким образом, любой криптографически сильный генератор случайных чисел сделает свое дело.OpenSSL предоставляет такой генератор случайных чисел (который сам питается от того, что предоставляет операционная система, например, CryptGenRandom()
в Windows или /dev/random
и /dev/urandom
в Linux).Функция RAND_bytes()
.Таким образом, код будет выглядеть так:
#include <openssl/rand.h>
/* ... */
unsigned char key[16], iv[16];
if (!RAND_bytes(key, sizeof key)) {
/* OpenSSL reports a failure, act accordingly */
}
if (!RAND_bytes(iv, sizeof iv)) {
/* OpenSSL reports a failure, act accordingly */
}