Расшифровать из SHA256 с

У меня есть этот код для шифрования строки в sha256 и рядом с base64:

 public static string Sha256encrypt(string phrase)
    {
        UTF8Encoding encoder = new UTF8Encoding();
        SHA256Managed sha256hasher = new SHA256Managed();
        byte[] hashedDataBytes = sha256hasher.ComputeHash(encoder.GetBytes(phrase));
        return Convert.ToBase64String(hashedDataBytes);
    }

Как я могу расшифровать свой пароль на другой стороне?

2 ответов


вы не можете расшифровать результат Хэш В Одну Сторону. Вместо этого вы должны сравнить хэш введенного пароля с сохраненным хэшем в базе данных.

пример:

var password = "1234";
var hashedPassword = Sha256encrypt(password);

var allowLogin = hashedPassword == storedPassword; //storedPassword from Database, etc.

Это только самые основы, хотя, при использовании алгоритмов хеширования вы должны рассмотреть возможность использования соль тоже.


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

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

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

подробнее о хэш-функции Википедия.