gpt4 book ai didi

c++ - 解密 AES 字符串

转载 作者:行者123 更新时间:2023-11-27 23:20:35 25 4
gpt4 key购买 nike

我正在使用 openssl 库来解密来自设备的一些原始字符串。

设备使用的加密是 AES - 128 位。

这是我的代码:

unsigned char *aes_decrypt(EVP_CIPHER_CTX *e, unsigned char *ciphertext, int *len)
{
int p_len = *len, f_len = 0;
unsigned char *plaintext = new unsigned char [p_len + 128];
memset(plaintext,0,p_len + 128);
syslog(LOG_NOTICE,"P_LEN BEFORE: %d",p_len);
EVP_DecryptInit_ex(e, NULL, NULL, NULL, NULL);
EVP_DecryptUpdate(e, plaintext, &p_len, ciphertext, *len);
EVP_DecryptFinal_ex(e, plaintext+p_len, &f_len);

syslog(LOG_NOTICE,"P_LEN : %d",p_len);
syslog(LOG_NOTICE,"F_LEN : %d",f_len);
*len = p_len + f_len;

syslog(LOG_NOTICE,"MARIMEA ESTE %d",*len);
return plaintext;
}

我的问题是:

  1. 加密后的字符串长度是否等于解密后的字符串长度? (在 AES 128 位中)

  2. 如果 f_len 代表解密的字节数(如果我错了请纠正我)那么为什么它比实际解密的数据小?

谢谢

最佳答案

AES-128 是一种分组密码。 block 大小为 128 位(16 字节)。所以密文的长度总是 16 字节的倍数。所以密文可以比明文大。

编辑:

答案:

  1. 不,加密数据的长度可以更大或相等。
  2. 错了,f_len 代表的是解密后的字节数。 (p_len + f_len) 做到了。

关于c++ - 解密 AES 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com