gpt4 book ai didi

c# - 通过 Rfc2898DeriveBytes 的密码哈希 - 传递给 getBytes 的内容

转载 作者:太空狗 更新时间:2023-10-29 21:28:27 34 4
gpt4 key购买 nike

我正在使用 Rfc2898DeriveBytes 来散列密码。

但是我不确定将什么传递给需要 int 的 GetBytes 方法。

我应该为此传递什么值,为什么?

   Rfc2898DeriveBytes hasher = new Rfc2898DeriveBytes(password, System.Text.Encoding.Default.GetBytes(salt), PasswordHasher.Iterations);
return Convert.ToBase64String(hasher.GetBytes(100));

最佳答案

记录在 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes.getbytes.aspx , GetBytes 的参数是您希望 GetBytes 方法为您生成的字节数。如果你想要 5 个字节,传递 5。如果你想要 500,传递 500。你要求多少字节通常取决于你需要多少字节用于你正在生成的 key (或其他加密输入)的预期用途。

为了更好地理解输出,请尝试运行以下命令行应用程序:

internal static class Program
{
private static void Main()
{
var deriver = new Rfc2898DeriveBytes("apples and oranges", 100, 20);
Program.WriteArray(deriver, 5);
Program.WriteArray(deriver, 10);
Program.WriteArray(deriver, 20);

Console.ReadLine();
}

private static void WriteArray(Rfc2898DeriveBytes source, int count)
{
source.Reset();
Console.WriteLine(string.Join(" ", source.GetBytes(count).Select(b => b.ToString())));
}
}

输出应该是这样的:

208 194 113 91 125
208 194 113 91 125 157 138 234 20 151
208 194 113 91 125 157 138 234 20 151 159 151 23 94 11 210 38 101 186 143

基本上,无论您选择什么长度,您都会得到一个一致的字节列表(基于密码、salt 和迭代)。您可以随时从相同的输入重新生成完全相同的字节列表。

关于c# - 通过 Rfc2898DeriveBytes 的密码哈希 - 传递给 getBytes 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15482114/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com