我正在尝试使用 aes.h
使用 AES 进行加密
我在分配以前生成的加密 key 时遇到问题。
const static unsigned char aes_key[]={(unsigned char*)strKey};
我收到以下错误:错误:从‘char*’到‘unsigned char’的无效转换[-fpermissive]
const static unsigned char aes_key[]={(unsigned char*)strKey};
#include <openssl/aes.h>
#define KEYSIZE 16
int main()
{
char key[KEYSIZE];
char strKey[(KEYSIZE*2)+1]={0};
for (int i = 0; i< KEYSIZE; i ++){
key[i] = (unsigned char) rand()%256;
printf("%.2x\n", (unsigned char)key[i]);
sprintf(&strKey[i*2], "%.2x", (unsigned char) key[i]);
}
printf("\n");
printf( "%s\n", strKey);
const static unsigned char aes_key[]={(unsigned char*)strKey};
/* AES-128 bit CBC Encryption */
AES_KEY enc_key;
AES_set_encrypt_key(aes_key, sizeof(aes_key)*8, &enc_key);
AES_cbc_encrypt(aes_input, enc_out, sizeof(aes_input), &enc_key, iv, AES_ENCRYPT);
return 0;
}
最佳答案
您要做的是用另一个数组变量strkey
初始化数组aes_key
。这在 C 中是不允许的。
你可以做的是
int len = strlen(strKey);
const static unsigned char aes_key[len+1];
strcpy(aes_key, str_key);
关于c++ - 错误 : AES Encryption key: invalid conversion from ‘char*’ to ‘unsigned char’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58003919/