У меня возникли проблемы с текстом шифрования AES, и мне нужна небольшая помощь по поводу того же, вот пояснение, я использую эту функцию для преобразования простого текста в зашифрованный текст.
/*
* Encrypt *len bytes of data
* All data going in & out is considered binary (unsigned char[])
*/
unsigned char *aes_encrypt(EVP_CIPHER_CTX *e, unsigned char *plaintext, int *len)
{
/* max ciphertext len for a n bytes of plaintext is n + AES_BLOCK_SIZE -1 bytes */
int c_len = *len + AES_BLOCK_SIZE, f_len = 0;
unsigned char *ciphertext = palloc(c_len);
/* allows reusing of 'e' for multiple encryption cycles */
EVP_EncryptInit_ex(e, NULL, NULL, NULL, NULL);
/* update ciphertext, c_len is filled with the length of ciphertext generated,
*len is the size of plaintext in bytes */
EVP_EncryptUpdate(e, ciphertext, &c_len, plaintext, *len);
/* update ciphertext with the final remaining bytes */
EVP_EncryptFinal_ex(e, ciphertext+c_len, &f_len);
*len = c_len + f_len;
return ciphertext;
}
Эта функцияотлично работает, когда мы используем шифрование, но когда я пытаюсь вычислить длину зашифрованного текста, используя strlen, я не получаю точную длину, у меня есть Google и нашел немного информации о печати зашифрованного текста в цикле for, используя% c, равный длинеразмером len.
мой вопрос: как мне сохранить зашифрованный текст в файле с точной длиной?поскольку strlen (зашифрованный текст) не дает точной длины, какой способ хранения зашифрованного текста?
Любая помощь будет высоко ценится :) Заранее спасибо