Зашифровать / расшифровать текстовый файл в Delphi?
Привет я хотел бы знать лучший метод шифрования для шифрования текстовых файлов и шифрования.
Мой Сценарий:
У меня есть программное обеспечение с двумя типами пользователей Administartor и операторов. Наше требование-шифровать текстовый файл, когда администратор вводит данные с помощью GUI и сохраняет их. Этот зашифрованный файл будет введен для оператора, и им просто нужно выбрать его и использовать этот файл. Здесь файл должен автоматически расшифровывать данные для дальнейшего расчета, когда оператор выберите эти файлы.
пожалуйста, помогите мне, какой метод шифрования/ дешифрования должен я использовать?
3 ответов
золотым правилом при выполнении криптографии является понимание того, что криптография в целом очень сложна.
существует множество различных подходов / алгоритмов на выбор, и ни один алгоритм/метод не может быть назван лучшим. Все зависит от ваших потребностей и возможностей влиять на распространение приложений и т. д.
примером потенциально проблемной ситуации является то, что в вашем сценарии расшифровка "ключа" должна быть распространена с помощью применение(Ы) и может сделать его небезопасным. Это обычно называют проблемой "распределения ключей".
хорошим местом для начала чтения о crypto является http://en.wikipedia.org/wiki/Cryptography.
Что касается готовых материалов для Delphi, есть несколько хороших пакетов:
- DEC v5.2 - http://blog.digivendo.com/2008/11/delphi-encryption-compendium-dec-52-for-d2009-released/
- DCPCrypt - http://www.cityinthesky.co.uk/cryptography.html
страницы Торри также имеют длинный список компонентов:
Я настоятельно рекомендую вам использовать некоторые из существующих реализаций и не начинать делать свои собственные, так как создание безопасного рабочего крипто algo очень сложно.
при перемещении сообщения encryptet с места / приложения на другое одна из проблем, которую вы должны рассмотреть, - это место для хранения ключей шифрования/дешифрования.
Как я вижу ваш сценарий, похоже, что он построен в ваших приложениях. Если это так, не забудьте использовать всевозможные трюки, чтобы скрыть его: строки пароля должны быть разделены на несколько битов и добавлены в защищенное пространство памяти, которое должно быть помечено как не подлежащее просмотру (иначе пароль можно увидеть в файл подкачки.)
Те же правила для незашифрованного содержимого (текстового файла). Лучше всего, что он никогда не сохраняется (даже временно) незашифрованным на диск. Если он сохранен, перепишите дату с мусором после использования, прежде чем удалить его.
другой approch (specialy, если вы уже используете компоненты сжатия), является то, что (текстовый) файл, может быть сжат с помощью пароля.
честно говоря, нет" лучшей " техники. Это в основном зависит от чувствительности данных, которые вы пытаетесь защитить и количество людей, которые могут получить доступ к этим данным. То, что может быть "лучшим" для меня, может быть чистым перебором для вашего проекта. В вашем случае вы можете использовать любой метод шифрования с двумя ключами. Или асимметричный ключ. В принципе, у администратора есть один ключ, а у оператора-другой. Затем администратор может зашифровать файлы, но не сможет их расшифровать опять же, если у него нет ключа оператора. Оператор может расшифровать файл и - при необходимости-зашифровать файл, к которому может получить доступ только администратор. (Асимметричные ключи шифруются в обоих направлениях.)
существует несколько решений, которые используют эти асимметричные ключи. Тот, который был бы лучшим, - это тот, который вы могли бы добавить в свой проект самым простым способом, все еще предлагая достаточную защиту для ваших нужд.
построение собственного асимметричного ключевого алгоритма также возможно, если ты настоящий математик. Вычисления сложны и включают в себя чрезвычайно высокие простые числа в большинстве решений. Как сказал К. Санделл, найдите хорошее, существующее решение, которое наилучшим образом соответствует вашим потребностям.