Общий формат файла конфигурации между Python и C? - PullRequest
2 голосов
/ 22 декабря 2010

Я собираюсь реализовать общий файл конфигурации, который будет записываться (выводиться) на python, но читаться (вводиться) на языке C.

Единственная предпосылка этого файла конфигурации - это то, что он может 'не может быть читаемым человеком.

У кого-нибудь есть предложения по поводу того, какой формат файла мне следует использовать для этого проекта?

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

Ответы [ 4 ]

2 голосов
/ 22 декабря 2010

Насколько вам нужен этот файл конфигурации?

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

Часто простое запутывание довольно эффективно. Дамп конфигурации в файл JSON (пожалуйста, не используйте xml). XOR содержание и изменить расширение. Это остановит все случайные проверки файла. Очевидно, не документируйте, что это ваша процедура запутывания.

Если вы беспокоитесь о пользовательской модификации конфигурационных файлов (вам не важно, доступны ли для чтения конфигурации, вы просто хотите предотвратить загрузку пользовательских настроек), используйте криптографическую подпись. Храните закрытый ключ в своей компании и используйте его и приложение python для создания подписанной конфигурации. Сохраните открытый ключ в приложении c ++ и используйте его для проверки правильности подписи конфигурации перед применением настроек.

1 голос
/ 22 декабря 2010

Возможно, проще всего использовать XML, затем запутать его простым шифром или шифрованием с фиксированным ключом.

1 голос
/ 22 декабря 2010

попробуйте это http://www.picklingtools.com/

0 голосов
/ 22 декабря 2010

Используйте простой читаемый человеком формат, такой как XML, а затем запутайте его, чтобы сделать его недоступным для редактирования (т. Е. Зашифруйте все и сохраните где-нибудь хеш и не загрузите его, если он был "испорчен").В противном случае вам просто нужно прикусить пулю и написать спецификацию для двоичного формата, который будет обмениваться между двумя программами.

...