As Rich already answered : "The IV, key, and ciphertext are all binary arrays of bytes." This is not specific to AES. Converting from or to hex (or Base64) strings is needed only to read from or print to outside your C program. Values passed to EVP_*() calls are expected to be raw (binary) data : unsigned char *key, unsigned char *iv, as documented in https://www.openssl.org/docs/manmaster/crypto/EVP_EncryptInit.html (and do not rely on the 'bogus' key and IV values in the do_crypt() example). -----Message d'origine----- De?: openssl-users [mailto:openssl-users-bounces at openssl.org] De la part de Sugumar Envoy??: vendredi 26 f?vrier 2016 17:30 ??: openssl-users at openssl.org Objet?: [openssl-users] Need information on AES encryption and decryption Key and IV type Hi,, I am using Openssl for encryption and decryption. I need some information on AES encryption and decryption key and iv type. My doubt is when we are using a openssl in command line we need to pass key and iv as hex strings right? and same when we are EVP calls in C/C++ programming what is the type of Key and Iv. i mean it should a hex string or raw binary values? I saw, openssl command line interface code of openssl in that the hex strings are converted into hex values. But in EVP calls the Key and Iv are used directly.