我有几种方法可以做一些加密,它总是\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,这是我从比较中得到的结果。
有谁知道为什么会这样?