c++ - 错误 : AES Encryption key: invalid conversion from ‘char*’ to ‘unsigned char’

标签 c++ c encryption aes

我正在尝试使用 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/

相关文章:

c++ - 面向对象程序设计继承拷贝构造函数

c++ - 模态对话框不会作为最顶层窗口打开

c++ - 多线程环境中的析构函数?

c - 在 C 编程语言中按字母顺序对数组进行排序?

c - 将Pthread转换为进程fork()

c - Android使用C(ndk)从 Assets 文件夹中读取文本文件

c++ - 如何使用 Code::Blocks 链接到库?

c - 程序C 简单的小程序错误

ssl - 证书生成

javascript - 当我更改输入时,如何在 HTML 表单上自动显示 JavaScript 函数的结果?