AES Encryption – Génération de clés avec OpenSSL

Comme référence et comme suite à la publication: comment utiliser OpenSSL pour déchiffrer des données Java chiffrées AES?

J’ai les questions suivantes.

J’utilise les bibliothèques OpenSSL et la programmation en C pour chiffrer des données dans aes-cbc-128. On me donne toutes les données binarys d’entrée et je dois les chiffrer.

J’apprends que Java a une interface CipherParameters pour définir IV et KeyParameters aussi.

Existe-t-il un moyen de générer une IV et une clé en utilisant openSSL? En bref, comment utiliser un programme C pour appeler le générateur aléatoire openSSL à ces fins. L’un de vous peut-il fournir des documents / exemples / liens à ce sujet?

Merci

Une clé AES et un IV pour le chiffrement symésortingque ne sont que des paquets d’octets aléatoires. Donc, tout générateur de nombres aléatoires doté d’une force de cryptographie fera l’affaire. OpenSSL fournit un tel générateur de nombres aléatoires (qui se nourrit de tout ce que le système d’exploitation fournit, par exemple CryptGenRandom() sous Windows ou /dev/random et de /dev/urandom sous Linux). La fonction est RAND_bytes() . Donc, le code ressemblerait à ceci:

 #include  /* ... */ 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 */ } 

En supposant AES-128:

 unsigned char key[16]; RAND_bytes(key, sizeof(key)); unsigned char iv[16]; RAND_bytes(iv, sizeof(iv)); 

Le générateur aléatoire doit être ensemencé avant d’utiliser l’un de ceux-ci .