无法将散列密码字节数组转回字符串

Can't Turn Hashed Password Byte Array Back Into String

我正在编写一个包含注册和所有功能的身份验证系统。密码用盐散列。我 运行 遇到了一个问题,我正在使用的实现使用 salt 进行操作,最终哈希是字节数组。我无法将其转换回我可以存储在 SQL 中的常规人类可读字符串,并且在打印到控制台时我已经尝试了编码 class 中的几乎所有编码..

如有任何帮助,我们将不胜感激。我只是错过了一些非常明显的东西吗?

下面的代码示例:

class Program
    {
        static void Main(string[] args)
        {
            //The salt and hash sizes are 16 bytes (128 bits)
            int saltSize = 16;
            int hashSize = 16; 
            int iterations = 100000;

            RNGCryptoServiceProvider randomness = new RNGCryptoServiceProvider();
            byte[] salt = new byte[saltSize];
            randomness.GetBytes(salt);

            string password = "Mypassissecure7";
            byte[] passBytes = Encoding.Default.GetBytes(password);

            Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(passBytes, salt, iterations, HashAlgorithmName.SHA512);

            byte[] hash = pbkdf2.GetBytes(hashSize);
            
        }
    }

为了完成:

var base64String = System.Convert.ToBase64String(hash);

var hexString = BitConverter.ToString(hash);