Расшифровка в c # - PullRequest
       4

Расшифровка в c #

0 голосов
/ 19 августа 2011

Я должен сделать расшифровку перед сравнением пароля. Я не использовал это раньше, может кто-нибудь сказать мне, каким должен быть код дешифрования. спасибо

public string Encript(string password)
        {
            System.Security.Cryptography.MD5CryptoServiceProvider objCript =
                new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(password);
            bs = objCript.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();

            foreach (byte b in bs)
            {
                s.Append(b.ToString("x2").ToLower());
            }
            password = s.ToString();
            return password;
        }

Ответы [ 7 ]

4 голосов
/ 19 августа 2011

Алгоритм MD5 - это не алгоритм шифрования, а генератор хешей.Хеш-код должен быть односторонней функцией, поэтому «расшифровка» отсутствует.Для вашей проблемы: Вы должны также сохранить пароль в базе данных MD5-хэширования, поэтому сравнивайте только значения хэша!

2 голосов
/ 19 августа 2011

Не пытайтесь расшифровать пароль!

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

Редактировать: В этой статье описываетсяобщий подход к аутентификации.

0 голосов
/ 19 августа 2011

Как уже говорили другие пользователи, MD5 - это односторонний алгоритм хеширования.Вы не можете расшифровать хеш, чтобы восстановить исходный пароль.Лучшее, что вы можете сделать, это «угадать» пароль, хешировать его с помощью MD5 и сравнить его с хешем.Это метод грубой силы, который обычно занимает много времени.И если при создании хэша использовалась соль, то это займет еще больше времени.

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

Хорошая статья о плохих паролях, хэшах, солях, радужных таблицах и т. Д.можно найти здесь:

Плохие пароли - это не весело, а хорошая энтропия всегда важна: выявление ошибок безопасности

На самом деле вы не пытаетесь проникнуть на чей-то сайт,сейчас ты?

0 голосов
/ 19 августа 2011

На самом деле расшифровка отсутствует.

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

Одним из способов использования хеша MD5 является сохранение хеша в базе данных вместо сохранения пароля пользователя.,Затем, когда вы получаете хеш от пользователя, вы вычисляете хеш из него и сравниваете его с уже сохраненным паролем.

Рекомендуется применять к паролю приложение « salt ».,Таким образом, хэш «пароля» в одной системе отличается от хэша «пароля» в другой.Посмотрите на этот вопрос для примера: MD5 хэш с солью для хранения пароля в БД в C #

0 голосов
/ 19 августа 2011

Существует полный пример того, как использовать MD5CryptoServiceProvider для сравнения заданной строки (скажем, пароля пользователя) с данным хешем (скажем, хеш-пароль, хранящийся в базе данных, как предложил Маттен) в MSDN здесь:

MD5CryptoServiceProvider Class

(На самом деле ваш код выглядит как полученный из части примера.)

0 голосов
/ 19 августа 2011

Пожалуйста, посмотрите: http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

у него уже есть пример - вместо этого вы должны сравнить зашифрованные значения (на самом деле невозможно получить чистый пароль из хэша в приемлемое время)

0 голосов
/ 19 августа 2011

Вы не можете (легко) расшифровать MD5.Используйте шифрование на основе ключей (не могу думать ни о чем, кроме простого шифрования XOR)

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