C ++: как зашифровать файл конфигурации XML - PullRequest
2 голосов
/ 04 июля 2011

У меня есть проприетарное приложение, которое использует конфигурацию xml.В настоящее время я использую boost :: property_tree для чтения XML-файла.

Я хотел бы развернуть исполняемый файл и XML-файл в более общедоступной системе и хочу, чтобы никто, включая системного администратора, не читал XML-файл.

В идеале я хотел бы сохранить в своей системе текст в формате xml, чтобы я мог легко изменить его вручную.Затем я вызову некоторую команду шифрования для файла, разверну ее на более общедоступной машине, и исполняемый файл расшифрует ее на лету.Я бы использовал тот же ключ и просто жестко закодировал его в исходный код исполняемого файла.

Это разумный подход?Какой самый простой способ реализовать это?Есть ли лучший способ?

Ответы [ 4 ]

2 голосов
/ 04 июля 2011

Поскольку вы уже используете boost, вы всегда можете сериализовать его . Если вы используете бинарные архивы, файл будет практически нечитаемым. Я предполагаю, что мой дополнительный вопрос будет таким: вы также хотите, чтобы он был защищен ? Или просто нечитабельно?

1 голос
/ 04 июля 2011

У меня был очень похожий случай. Я использовал алгоритм сжатия для хранения файла в зашифрованном виде. zlib можно использовать для C ++. Вы можете легко зашифровать и расшифровать ваш файл, как из командной строки, так и из кода. Чтобы добавить «безопасность», вы можете заархивировать сжатый файл с помощью пароля.

Это простой в реализации и простой в использовании. Конечно, я не буду использовать такой метод, если мои клиенты - хакеры, или у них есть финансовый стимул читать XML.

1 голос
/ 04 июля 2011

Если ваша цель состоит в том, чтобы предотвратить кого-либо от случайного осмотра , то это разумный подход.

Если вы должны гарантировать (по какой-то странной причине), что конфигурация не может быть прочитана, это глупое поручение, потому что программа может прочитать ее, так что пользователь, который полон решимости сделать это, может сделать это также. Либо путем разборки программы, либо просто путем создания дампа памяти из отладчика. Тем не менее, простое и легкое шифрование будет достаточно хорошим, потому что даже самое жесткое шифрование будет сломано таким же образом.

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

1 голос
/ 04 июля 2011

Если код выполняется на компьютере клиента, то в принципе вы никогда не сможете предотвратить получение данных, поскольку должно быть на компьютере клиента . Вы можете попытаться запутать, но в конечном итоге клиент должен будет прочитать данные, поэтому он должен их знать.

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

Все зависит от серьезности вашей необходимости защиты данных. Если он абсолютный, то вы не можете этого сделать, но если вы просто хотите не пускать случайного посетителя, вы можете попытаться сделать это немного сложнее ... расскажите нам некоторые детали, если вы серьезно относитесь к этому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...