少し暗号化を行う方法がいくつかあり、\n
比較している値に常に追加されます。
これは改行文字のせいでしょうか?
public static class Security
{
public static string CreateHash(this string unHashed)
{
SHA256CryptoServiceProvider x = new SHA256CryptoServiceProvider();
byte[] data = Encoding.UTF8.GetBytes(unHashed);
data = x.ComputeHash(data);
return Encoding.UTF8.GetString(data);
}
public static bool MatchHash(this string hashData, string hashUser)
{
if (hashUser == hashData)
{
return true;
}
else
{
return false;
}
}
}
あるテキスト ボックスに値を入力し、別のテキスト ボックスに値を入力するために を実行していCreateHash()
ます (すべてテスト用です)。次に、別のテキスト ボックスから比較チェックを実行します。
protected void btn_dehash_Click(object sender, EventArgs e)
{
// get value entered and hash it
var matchPass = txt_password.Text.CreateHash();
// populate lbl with true or false
lbl_Name.Text = txt_hashed.Text.MatchHash(matchPass) ? "true" : "false";
}
私が得た結果MD5
は問題なく、これははるかに短いため機能します。より安全な方法を使用したいので、SHA256 を使用しました。これが比較から得た結果です。
なぜこれが起こっているのか誰にも分かりますか?