从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); } 

如何在另一方解密我的密码?

你不能解密单向哈希的结果。 您应该做的是比较输入的密码的哈希值与数据库中存储的哈希值。

例:

 var password = "1234"; var hashedPassword = Sha256encrypt(password); var allowLogin = hashedPassword == storedPassword; //storedPassword from Database, etc. 

这只是非常基础,但是当使用散列算法时,你也应该考虑使用Salt 。

这本身是不可能的。 SHA是一个哈希函数,这意味着它是单向的,仅用于validation和类似的事情。 由于SHA-256的结果是固定长度(256位),这也意味着在计算它时大多数信息都会丢失。

你可以强制它,这意味着你可以尝试计算大量不同输入的散列并查看散列是否匹配。

在将来的某个时候,可以找到SHA的加密弱点,从而使其易碎但实际上它不是可逆function。

请参阅Wikipedia上有关哈希函数的详细信息。