无法将散列密码字节数组转回字符串
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);
我正在编写一个包含注册和所有功能的身份验证系统。密码用盐散列。我 运行 遇到了一个问题,我正在使用的实现使用 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);