Как зашифровать хранимую информацию, используя C #? - PullRequest
0 голосов
/ 07 октября 2011

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

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

Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

3 голосов
/ 07 октября 2011

Вы хотели бы использовать алгоритм симметричного шифрования, такой как AES или 3DES.MD5 - это не шифрование, это хэширование, а исходный пароль фактически не сохраняется.

3 голосов
/ 07 октября 2011

Вы можете использовать алгоритм AES

Следующая статья может помочь вам начать:

Обеспечьте безопасность данных с помощью нового расширенного стандарта шифрования

Расширенный стандарт шифрования (AES) - это Национальный институт Спецификация стандартов и технологий для шифрования электронные данные. Ожидается, что он станет принятым средством шифрование цифровой информации, в том числе финансовой, телекоммуникации и правительственные данные. Эта статья представляет Обзор AES и объясняет алгоритмы, которые он использует. В комплекте есть полная реализация C # и примеры шифрования данных .NET. После Прочитав эту статью, вы сможете зашифровать данные с помощью AES, протестировать Программное обеспечение на основе AES и используйте шифрование AES в своих системах.

1 голос
/ 09 октября 2011

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

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

Во-вторых, используйте API защиты данных (DPAPI) .Это стандартный способ хранения пользовательских секретов в системе Windows.(см. Написание безопасного кода , глава 9, стр. 305).В более ранней версии .Net вам нужно будет взаимодействовать.В более поздних версиях .Net (3.5, IIRC) он доступен через CLR.

Наконец, MD5 сломан, поэтому его не следует использовать в криптографических целях.NIST рекомендует уровень безопасности 112 бит (ср., Специальная публикация 800-57 ).То же самое для ECRYPT .

Если вам нужно сбросить DPAPI, используйте SHA-224 или выше в качестве хэша для функции получения ключа на основе пароля.Зашифруйте файл с помощью 3-х ключей TDEA, AES, Camellia и т. Д. Используйте аутентифицированный режим шифрования (EAX, CCM, GCM) для обнаружения взлома.Если у вас нет режима шифрования с проверкой подлинности, вам необходимо добавить гарантии подлинности с помощью CMAC или HAMC (DPAPI сделает это за вас).

Jeff

1 голос
/ 07 октября 2011

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

Вам необходим алгоритм шифрования .

...