Ошибка: ключ шифрования AES: недопустимое преобразование из «char *» в «unsigned char» - PullRequest
3 голосов
/ 19 сентября 2019

Я пытаюсь зашифровать с помощью AES, используя aes.h У меня проблемы с назначением предыдущего сгенерированного ключа шифрования.

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 голосов
/ 19 сентября 2019

То, что вы пытаетесь сделать, это инициализировать массив aes_key другой переменной массива strkey.Это не разрешено напрямую в C.

Вместо этого вы можете сделать

int len = strlen(strKey);
const static unsigned char aes_key[len+1];
strcpy(aes_key, str_key);
...