Я хочу зашифровать массив типа float и снова декодировать его с помощью той же функции. Я прочитал несколько потоков в Интернете, но я не мог найти решение, которое делает меня счастливым. Я попытался использовать указатель float-type для char * и XOR для результата с помощью ключа с символом char. Вот моя закодировать функция:XOR шифрование массива float в c
const char* key = "mykey";
int keylen = sizeof(key)/sizeof(key[0]);
void encodeData(float *data, int size)
{
int bytes = (int)(sizeof(float)/sizeof(char));
for(int i=0; i<size; i++)
{
for(int j=0; j<bytes; j++)
{
data[i] = *(((char *)&data[i]) + j)^(key[(bytes*i)%keylen]);
}
}
}
Компиляция работает, но я не получить те же результаты после ен- и декодирования. Что я делаю не так?
При использовании 'sizeof' на указатель, вы получите размер указателя, а не то, что он указывает. Либо используйте 'strlen' для получения длины строки, либо создайте' key' массив. –
Левая часть задания неверна. Вместо 'data [i] =' он должен быть '* ((char *) & data [i]) + j) =' –
Кроме того, 'sizeof (char)' определяется стандартной спецификацией C, чтобы всегда быть ' 1'. –