Я пытаюсь понять параметры следующей функции в библиотеке криптовальной среды openSSL.Детали параметров OpenSSL's AES_ctr128_encrypt()
void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char ivec[AES_BLOCK_SIZE],
unsigned char ecount_buf[AES_BLOCK_SIZE],
unsigned int *num);
Проработав предложения данных here я был в состоянии выяснить:
*in - is the buffer in.
*out - is the buffer out.
length - is the the length of the *in buffer.
*key - is the private key.
ivec[0-7] - is the random IV
ivec[8-15] - is the counter thats incremented for every block that's encrypted.
Я не уверен, о параметрах
ecount_buf
иnum
.
Я вижу, что num
установлен на length % AES_BLOCK_SIZE
после вызова.
Любые указатели на какой параметр
ecount_buf
предназначен для?
Вы должны * не * использовать 'AES_encrypt' и друзей. Это программная реализация, поэтому вам не понравится аппаратная поддержка, например AES-NI. Вы должны использовать 'EVP_ *' функции. См. [Симметричное шифрование и дешифрование EVP] (http://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption) в вики OpenSSL. Фактически, вы, вероятно, должны использовать аутентифицированное шифрование, поскольку оно обеспечивает * и * конфиденциальность и аутентичность. См. [EVP Authenticated Encryption and Decryption] (http://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption) в вики OpenSSL. – jww