2015-07-13 3 views
0

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

public static string CreateHash(string password) 
{ 
    // Generate a random salt 
    RNGCryptoServiceProvider csprng = new RNGCryptoServiceProvider(); 
    byte[] salt = new byte[24]; 
    csprng.GetBytes(salt); 
    HashAlgorithm hashAlg = new SHA256CryptoServiceProvider(); 
    byte[] bytValue = System.Text.Encoding.UTF8.GetBytes(salt + ":" + password); 
    // Hash the password and encode the parameters 
    byte[] bytHash = hashAlg.ComputeHash(bytValue); 
    return 
     Convert.ToBase64String(bytHash); 
} 

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

+0

Вы не можете, хеши являются односторонними алгоритмами. – MvdD

+0

Кроме того, это почти всегда плохая идея, чтобы получить исходное значение пароля. Все, что вы пытаетесь достичь, может быть сделано лучше и безопаснее. – Rob

+0

Есть ли какие-либо другие алгоритмы, которые являются двумя способами, так что я могу реализовать его для своей логики. – axn7975

ответ

4

SHA-256 - это алгоритм одностороннего хэша. Вы не можете вернуть исходный текст из хэша, не догадываясь о грубой силе.

+0

спасибо .. !! Существуют ли какие-либо другие алгоритмы, которые являются двумя способами, поэтому я могу реализовать его для своей логики. – axn7975

+0

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

+0

Я ищу простые функции шифрования и дешифрования, где пароли должны быть солеными и храниться в криптографической хэш-функции – axn7975

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