错误:AES加密密钥:从'char*'到'unsigned char'的转换无效

3

我正在尝试使用 aes.h 进行AES加密,但是我无法将之前生成的加密密钥分配给它。

const static unsigned char aes_key[]={(unsigned char*)strKey};

我遇到了以下错误:error: invalid conversion from ‘char*’ to ‘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;
}
1个回答

0
你想要做的是用另一个数组变量 strkey 初始化数组 aes_key。在 C 语言中,这是不被允许的。
你可以尝试以下方法:
int len = strlen(strKey);
const static unsigned char aes_key[len+1];
strcpy(aes_key, str_key);

你所尝试的是用另一个数组变量strkey初始化数组aes_key。这确实是OP的意图。但严格来说,他所做的和错误所述的是定义一个具有一个元素的unsigned char数组,并使用char *进行初始化。 - Guillaume Petitjean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接