修复了基于输入字符串的salt生成-C#
本文关键字:字符串 salt -C# 生成 输入 于输入 | 更新日期: 2023-09-27 17:58:38
我有一个简单的类,它有两个方法:
private static byte[] PBKDF2(string field, byte[] salt, int iterations, int outputBytes)
{
Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(field, salt);
pbkdf2.IterationCount = iterations;
return pbkdf2.GetBytes(outputBytes);
}
public static string CreateHash(string field, String salt)
{
//if (Array.TrueForAll(salt, x => x == 0))
//{
// RNGCryptoServiceProvider csprng = new RNGCryptoServiceProvider();
// csprng.GetBytes(salt);
// string s = Convert.ToBase64String(salt);
//}
byte[] salts = Encoding.ASCII.GetBytes(salt);
byte[] hash = PBKDF2(field, salts, PBKDF2_ITERATIONS, HASH_BYTE_SIZE);
return Convert.ToBase64String(hash);
}
我需要提供一个前端,用户可以在其中输入一个简单的字符串,比如"abc",我需要在此基础上生成一个salt。这是我要存储在数据库中的内容,并使用它传递给上面的方法(CreateHash)来取消标识数据这个salt/key需要能够解密回来,我必须在前端显示。
我也可以使用其他类/库。它不需要是Rfc2898DeriveBytes。
请为我提供一些关于如何实现salt/key生成功能的信息。这个盐不可能是一个随机值。
谢谢!
您提到需要解密散列字符串。
PBKDF2不是一种加密算法,而是一种密钥推导函数,无论是否使用salt,您都无法根据生成的哈希计算原始输入。
你应该寻找的是加密,而不是哈希。
看看这个链接中的一些例子。