Tag: rfc2898

为什么我需要使用Rfc2898DeriveBytes类(.NET),而不是直接使用密码作为密钥或IV?

使用Rfc2898DeriveBytes和只使用Encoding.ASCII.GetBytes(string object);什么区别Encoding.ASCII.GetBytes(string object); ? 两种方法我都取得了相对的成功,前者是一种更为冗长的方法,后者简单而重要。 两者似乎都允许你最终做同样的事情,但我正在努力看到使用前者而不是后者。 我已经能够掌握的基本概念是,可以将string密码转换为字节数组,以用于例如对称encryption类AesManaged 。 通过RFC类,但你创build你的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'对象来设置对称encryptionalgorithm类中的.Key或.IV属性。 即。 RijndaelManaged rj = new RijndaelManaged (); rj.Key = rfcKey.Getbytes(rj.KeySize / 8); rj.IV = rfcKey.Getbytes(rj.Blocksize / 8); 'rj'应该准备好了! 令人困惑的部分…所以,而不是使用“rfcKey”对象,我可以不使用我的'myPassInBytes'数组来帮助设置我的'rj'对象? […]