Здравствуйте, задача состоит в следующем :
Изначально нам дан массив double, который нужно зашифровать xor-ом, я привожу массив double к char массиву следующим образом:
unsigned char *char_from_double = reinterpret_cast
После этого прохожу по нему xor-ом, и на этом этапе возник вопрос, как его преобразовать обратно из char* в double массив?
Просто привести char* к double массиву не получается
Как вариант, отдельно шифровать каждый элемент массива double, и хранить массив массивов char*, где один char* это одно double число, но подозреваю что это не очень хороший вариант
Ответ
Точно так же только наоборот. reinterpret_cast преобразует только укзатель, сам массив остается неизменным. Если у вас алгоритм шифорвания корректный то должно работать так:
double data_1[DATA_SIZE] = {...};
unsigned char * byte_array_1 = reinterpret_cast
auto secret = encrypt(byte_array_1, DATA_SIZE * sizeof(double));
double data_2[DATA_SIZE] = {...};
unsigned char * byte_array_2 = reinterpret_cast
decrypt(secret, byte_array_2, DATA_SIZE * sizeof(double));
double * data_2_pointer = reinterpret_cast
Но обычно так не делают как вы описываете. Под зашифрованные данные нужно выделить отдельный массив байтов и в него складывать зашифрованные данные, а исходный массив изменять не надо. Так принято не только для шифрования, а вообще для всех видов подобных обработок данный например сжатия.
Комментариев нет:
Отправить комментарий