2010-05-06 3 views
8

Привет, я хотел бы узнать лучший метод шифрования для шифрования и шифрования текстовых файлов.Шифровать/расшифровать текстовый файл в Delphi?

Мой Сценарий:

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

Пожалуйста, помогите мне, какую технику шифрования/дешифрования я должен использовать?

ответ

19

Золотое правило при выполнении криптографии заключается в том, чтобы понять, что криптография в целом очень сложна.

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

Примером потенциально проблемной ситуации является то, что в вашем сценарии «ключ» дешифрования должен быть распространен вместе с приложением (приложениями) и может сделать его небезопасным , Обычно это называется проблемой «Распределение ключей».

Хорошее место для начала чтения о криптографии - http://en.wikipedia.org/wiki/Cryptography.

Что касается готового материала для Delphi есть несколько хороших доступных пакетов:

страницы Торри также имеет длинный список компонентов:

я настоятельно рекомендую вам использовать некоторые из существующих реализаций и не начать делать свой собственный, так как создание безопасной рабочей крипто Algo очень и очень трудно.

+0

DEC (The Encryption Compendium) является очень мощным. Хорошая рекомендация! –

+2

Windows сама обеспечивает очень хорошую реализацию для различных криптографических алгоритмов с использованием Windows CryptoAPI. Я рекомендую вам использовать CryptoAPI или написать класс оболочки вокруг функций CryptoAPI и использовать их в своем коде. – vcldeveloper

+0

Спасибо, что обеспечил мне такое хорошее начало –

3

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

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

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

3

По правде говоря, нет «лучшей» техники.В основном это зависит от чувствительности данных, которые вы пытаетесь защитить, и от числа людей, которые могут получить доступ к этим данным. Что может быть «наилучшим» для меня, может быть, просто излишним для вашего проекта. В вашем случае вы можете использовать любой метод шифрования с двумя ключами. Или asymmetric key. В принципе, администратор имеет один ключ, а оператор - другой. Затем администратор может шифровать файлы, но он не сможет их расшифровать снова, если у него нет ключа оператора. Оператор может расшифровать файл и -если нужно шифровать файл, доступ к которому может получить только администратор. (Асимметричные ключи шифруются в обоих направлениях.)

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

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

Смежные вопросы