Как скрыть строку в двоичном коде?

Иногда полезно скрыть строку из двоичного (исполняемого) файла. Например, имеет смысл скрывать ключи шифрования от двоичных файлов.

Когда я говорю «скрыть», я имею в виду усложнение поиска строк в скомпилированном двоичном файле.

Например, этот код:

const char* encryptionKey = "My strong encryption key";
// Using the key

после компиляции создает исполняемый файл со следующим в его разделе данных:

4D 79 20 73 74 72 6F 6E-67 20 65 6E 63 72 79 70   |My strong encryp|
74 69 6F 6E 20 6B 65 79                           |tion key        |

Вы можете видеть, что наша секретная строка может быть легко найдена и / или изменена.

Я мог бы скрыть строку ...

char encryptionKey[30];
int n = 0;
encryptionKey[n++] = 'M';
encryptionKey[n++] = 'y';
encryptionKey[n++] = ' ';
encryptionKey[n++] = 's';
encryptionKey[n++] = 't';
encryptionKey[n++] = 'r';
encryptionKey[n++] = 'o';
encryptionKey[n++] = 'n';
encryptionKey[n++] = 'g';
encryptionKey[n++] = ' ';
encryptionKey[n++] = 'e';
encryptionKey[n++] = 'n';
encryptionKey[n++] = 'c';
encryptionKey[n++] = 'r';
encryptionKey[n++] = 'y';
encryptionKey[n++] = 'p';
encryptionKey[n++] = 't';
encryptionKey[n++] = 'i';
encryptionKey[n++] = 'o';
encryptionKey[n++] = 'n';
encryptionKey[n++] = ' ';
encryptionKey[n++] = 'k';
encryptionKey[n++] = 'e';
encryptionKey[n++] = 'y';

... но это не очень хороший метод. Есть идеи получше?

PS: я знаю, что простое сокрытие секретов не работает против решительного злоумышленника, но это гораздо лучше, чем ничего ...

Кроме того, я знаю о ассиметричном шифровании, но в данном случае это неприемлемо. Я выполняю рефакторинг существующего приложения, которое использует шифрование Blowfish и передает зашифрованные данные на сервер (сервер расшифровывает данные с помощью того же ключа).

I не может изменить алгоритм шифрования, потому что мне нужно обеспечить обратную совместимость. яне может даже изменить ключ шифрования.

Ответы на вопрос(20)

Ваш ответ на вопрос