3

私が使用しているこの便利なハッシュ コードを誰かが元に戻すことはできますか?

using System.Security.Cryptography;

public static string EncodePasswordToBase64(string password)
{  byte[] bytes   = Encoding.Unicode.GetBytes(password);
   byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes);
   return Convert.ToBase64String(inArray);
}

私がやることはすべてひどく失敗します:(。

4

4 に答える 4

20

いいえ、ハッシュを逆にすることはできません。典型的なプロセスは、他の入力をあなたが持っているハッシュと比較して、それらが同じかどうかを確認することです。

のように (疑似):

initial  = Hash(password);
possible = Hash("test");

if( initial == possible ){
    // we infer that password = "test"
}

ただし、SHA1、SHA0、および MD5 は使用しないでください。(それぞれの破損の程度が異なるため)。SHA-2 を使用する必要があります

于 2009-09-30T23:41:02.940 に答える
5

「ハッシュを解除」する唯一の現実的な方法は、レインボー テーブルを使用することです。これは、考えられるすべての入力に対して計算されたハッシュの大きなテーブルです。ハッシュを調べて、元の入力と思われるものを取得します。

http://en.wikipedia.org/wiki/Rainbow_table

于 2009-09-30T23:44:13.993 に答える
0

SHA は、NSA の「Secure Hash Algorithm」の頭字語です。

セキュア ハッシュは、定義上、元に戻すのが困難です。そうでなければ、セキュアではありません。

同じハッシュを生成するソースを簡単に計算できるようにする場合は、可逆ハッシュ関数を使用する必要があります (それでも、複数のソース入力が同じ結果になる可能性があるハッシュの衝突により、元のソースを取得できない場合があります)。ハッシュ出力)。

于 2009-10-01T05:25:01.527 に答える
0

残念ながら、SHA1、MD5、またはその他の一方向ハッシュ方式を非ハッシュ化することはできません。BASE-64を元に戻すことは可能ですが。

于 2009-09-30T23:48:03.503 に答える