gpt4 book ai didi

.net - 使用Rfc2898DeriveBytes类获取Key和IV

转载 作者:行者123 更新时间:2023-12-02 17:34:10 27 4
gpt4 key购买 nike

我刚刚开始熟悉加密和 .NET 框架。在查看了许多示例之后,我发现在使用 .NET 类 Rfc2898DeriveBytes 时出现了令人困惑的重复模式。当使用此类获取加密 key 和初始化向量时,似乎使用了相同的方法。

这是来自 MSDN blog 的一些代码演示如何获取 key 和初始化向量。

byte[] salt = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7 };
Rfc2898DeriveBytes pwdGen = new Rfc2898DeriveBytes("P@$$w0rd", salt, 1000);

// generate an RC2 key
byte[] key = pwdGen.GetBytes(16);
byte[] iv = pwdGen.GetBytes(8);

我也在其他地方看到过这种用法。我想我会想到它会是这样的......

// generate an RC2 key
byte[] key = pwdGen.GetKey();
byte[] iv = pwdGen.GetInitializationVector();

我一定是漏掉了一些东西。如果 key 和初始化向量(IV)只是随机数,那么在使用正确的密码和盐时如何再次获得它们?

最佳答案

RFC2898 key 派生算法是确定性的。当您使用相同的输入运行它时,您将获得相同的输出。

因此,只要您以相同的顺序调用 GetBytes(),请求相同的字节数,您就会获得相同的 key 和 IV。

不要忘记,在真实的系统中,盐应该在加密时随机生成(并存储起来,以便在解密时检索)。

关于.net - 使用Rfc2898DeriveBytes类获取Key和IV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425871/

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