1
为什么我需要使用Rfc2898DeriveBytes类(在.NET中),而不是直接使用密码作为密钥或IV?
使用Rfc2898DeriveBytes和仅使用之间有什么区别Encoding.ASCII.GetBytes(string object);? 我在这两种方法中都取得了相对的成功,前一种方法是一个比较冗长的方法,而后者则简单易懂。两者似乎都允许您最终做同样的事情,但是我很难理解使用前者而不是后者的意义。 我已经掌握的基本概念是,您可以将字符串密码转换为字节数组,以用于例如对称加密类AesManaged。通过RFC类,但是在创建rfc对象时可以使用salt值和密码。我认为它更安全,但这充其量也是毫无根据的猜测!另外,它还允许您返回一定大小的字节数组,类似的东西。 以下是一些示例,向您展示我来自哪里: byte[] myPassinBytes = Encoding.ASCII.GetBytes("some password"); 要么 string password = "P@%5w0r]>"; byte[] saltArray = Encoding.ASCII.GetBytes("this is my salt"); Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(password, saltArray); 现在,可以使用“ rfcKey”对象在对称加密算法类上设置.Key或.IV属性。 即。 RijndaelManaged rj = new RijndaelManaged (); rj.Key = rfcKey.Getbytes(rj.KeySize / 8); rj.IV = rfcKey.Getbytes(rj.Blocksize / 8); 'rj'应该准备好了! 令人困惑的部分...因此,我不能只使用我的“ myPassInBytes”数组来帮助设置“ …