在c中对浮点数组进行XOR加密

时间:2016-09-06 14:21:00

标签: c encryption floating-point bit-manipulation xor

我想加密浮点型数组并使用相同的函数再次解码它。我已经阅读了网上的几个主题,但我找不到让我满意的解决方案。 我试图将float-type-pointer强制转换为char *,并使用我的char-typed键对结果进行异或。 这是我的编码功能:

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]);
        }
    }
}

编译有效,但在解码后我得不到相同的结果。我做错了什么?

1 个答案:

答案 0 :(得分:1)

修正:

void encodeData(float *data, int size) 
{ 
     int bytes = (int)(sizeof(float)/sizeof(char)); 
     char *tmp = (char *) data; 
     for(int i=0; i<bytes*size; i++) 
     { 
         *(tmp+i) = *(tmp+i) ^ key[i%keylen]; 
     } 
     data = (float*) tmp; 
 }