SHA256给出44长度输出而不是64长度

我正在使用以下代码来执行SHA256。

public static string GenerateSaltedHash(string plainTextString, string saltString) { byte[] salt = Encoding.UTF8.GetBytes(saltString); byte[] plainText = Encoding.UTF8.GetBytes(plainTextString); HashAlgorithm algorithm = new SHA256Managed(); byte[] plainTextWithSaltBytes = new byte[plainText.Length + salt.Length]; for (int i = 0; i < plainText.Length; i++) { plainTextWithSaltBytes[i] = plainText[i]; } for (int i = 0; i < salt.Length; i++) { plainTextWithSaltBytes[plainText.Length + i] = salt[i]; } byte[] bytes = algorithm.ComputeHash(plainTextWithSaltBytes); return Convert.ToBase64String(algorithm.ComputeHash(plainTextWithSaltBytes)); } 

当我使用SHA256时,预期结果长度为64.但是我得到了44的结果。问题是什么? 44长度输出会影响安全质量吗?

Base-64每个字符6位(2 ^ 6 = 64)。

 256 bits / 6 bits per char = 42.6666 char 

由于填充,这显然最终为44(您将在输出结尾看到一个或2 = )。

你必须期望base-16(AKAhex),每个字符4位(2 ^ 4 = 16)。

 256 bits / 4 bits per char = 64 char 

对于hex使用此 :

 return BitConverter.ToString(bytes).Replace("-", string.Empty);