2014-12-02 2 views
0

зашифровать пароль, следующий кодкак расшифровать SHA512 хэш-значение для фактической строки в C#

HashAlgorithm hashAlgorithm = null; 
hashAlgorithm = new SHA512CryptoServiceProvider(); 
try 
{ 
    byte[] byteValue = Encoding.UTF8.GetBytes(source); 
    byte[] hashValue = hashAlgorithm.ComputeHash(byteValue); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i <= hashValue.Length - 1; i++) 
    { 
     sb.AppendFormat("{0:x2}", hashValue[i]); 
    } 

    return Convert.ToString(sb); 
} 
catch 
{ 
    throw; 
} 

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

+0

Вы неправильно поняли, что делает хэш. Пожалуйста, прочитайте http://en.wikipedia.org/wiki/Cryptographic_hash_function –

+1

Умный парень сказал: «Как получить живую корову из говядины?». – C4u

+0

Другая проблема заключается в том, что обычный криптографический хеш, такой как SHA-2, не является тем, что вы хотите сделать для хэширования паролей. Вместо этого вы хотите использовать медленный соленый хеш. Подробнее см. В разделе [Как безопасно использовать хэш-пароли?] (Http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords) в security.se. – CodesInChaos

ответ

2

Вы hash пароль, а вы не encrypt. Это, как говорится, не может decrypt.

Взятые из here

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

в то время как

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

  1. тот же вход всегда будет производить один и тот же выход.
  2. Несколько несопоставимых входов не должны давать одинаковый выход.
  3. Невозможно перейти от выхода к входу.
  4. Любая модификация данного входа должна привести к резкому изменению хеша.

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

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

Вы должны расшифровать свои данные, а не использовать их. Шифрование и дешифрование данных - большой вопрос. Хорошей отправной точкой является чтение this. Как правило, у вас есть два типа encryoption, симметричный и асимметричный. Поэтому сначала читайте о них, а затем выбирайте тот, который, по вашему мнению, подходит вашим потребностям. Затем попытайтесь его реализовать. Вы будете использовать алгоритмы, которые уже реализованы в .NET и могут быть использованы для создания объектов соответствующих классов и вызова определенных методов.

Однако, здесь я должен сделать заметку. Обычно мы используем пароли, и мы их не шифруем. Это более безопасно.Взятый из here:

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

+0

то, что я могу использовать, с помощью которого я могу преобразовать вывод на вход? –

+0

Если ур серьезно задал это, прочитайте этот ответ еще раз. В противном случае google для грубой силы или атаки словаря. – C4u

+0

@NituBansal, пожалуйста, см. Мое обновление. – Christos