Decrypt from SHA256

本文关键字:SHA256 from Decrypt | 更新日期: 2023-09-27 18:31:52

我有代码将字符串加密到 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);
    }

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

Decrypt from SHA256

您无法解密单向哈希的结果。相反,您应该做的是将输入的密码的哈希与数据库中存储的哈希进行比较。

例:

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

不过,这只是最基本的,在使用哈希算法时,您也应该考虑使用 Salt。

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

不过,您可以暴力破解它,这意味着您可以尝试计算大量不同输入的哈希值,并查看哈希值是否匹配。

将来的某个时候,可能会发现 SHA 的加密弱点,从而使其易碎,但实际上它不是一个可逆的功能。

在维基百科上查看有关哈希函数的详细信息。

在 Ruby 中

digest = Digest::SHA256.new
decrypt_sha256 = digest.hexdigest(v)
if decrypt_sha256 == hash
  return v
end

结束返回零