我想加密一个浮点型数组并使用相同的函数再次对其进行解码。我已经在网上阅读了一些帖子,但找不到让我满意的解决方案。 我尝试将浮点类型指针转换为 char* 并将结果与我的 char 类型 key 进行异或。 这是我的编码函数:
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]);
}
}
}
编译有效,但在编码和解码后我没有得到相同的结果。我做错了什么?
最佳答案
已修复:
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;
}
关于c - C 中 float 组的异或加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351383/