10

文字列を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);
    }

反対側でパスワードを解読するにはどうすればよいですか?

4

2 に答える 2

24

One Way Hashの結果を復号化することはできません。代わりにすべきことは、入力されたパスワードのハッシュとデータベースに保存されているハッシュを比較することです。

例:

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

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

ただし、これは非常に基本的なものにすぎません。ハッシュ アルゴリズムを使用する場合は、Saltの使用も検討する必要があります。

于 2012-04-22T20:07:01.267 に答える
6

それ自体は不可能です。SHA はハッシュ関数であり、一方向であることを意味し、検証などにのみ使用されます。SHA-256 の結果は固定長 (256 ビット) であるため、計算時にほとんどの情報が失われることも意味します。

ただし、総当たり攻撃は可能です。つまり、多数の異なる入力のハッシュを試して計算し、ハッシュが一致するかどうかを確認できます。

将来的に、SHA の暗号化の脆弱性が発見され、解読可能になる可能性がありますが、実際には元に戻せる機能ではありません。

Wikipediaでハッシュ関数の詳細を参照してください。

于 2012-04-22T20:04:25.980 に答える