使用Rfc2898DeriveBytes和使用之间有什么区别Encoding.ASCII.GetBytes(string object);?
我对这两种方法都取得了相对的成功,前者是一种更长时间的方法,因为后者很简单而且非常重要.两者似乎都允许你最终做同样的事情,但我正在努力看到使用前者而不是后者.
我能够掌握的基本概念是你可以将字符串密码转换为字节数组,用于例如对称加密类AesManaged.通过RFC类,但在创建rfc对象时可以使用salt值和密码.我认为它更安全,但仍然是一个没有受过教育的猜测!此外,它允许您返回一定大小的字节数组,就像这样.
以下是一些示例,向您展示我的来源:
byte[] myPassinBytes = Encoding.ASCII.GetBytes("some password");
Run Code Online (Sandbox Code Playgroud)
要么
string password = "P@%5w0r]>";
byte[] saltArray = Encoding.ASCII.GetBytes("this is my salt");
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(password, saltArray);
Run Code Online (Sandbox Code Playgroud)
'rfcKey'对象现在可用于在对称加密算法类上设置.Key或.IV属性.
即.
RijndaelManaged rj = new RijndaelManaged ();
rj.Key = rfcKey.Getbytes(rj.KeySize / 8);
rj.IV = rfcKey.Getbytes(rj.Blocksize / 8);
Run Code Online (Sandbox Code Playgroud)
'rj'应该准备好了!
令人困惑的部分......所以我不是只使用'myPassInBytes'数组来帮助设置我的'rj'对象,而不是使用'rfcKey'对象?
我试过在VS2008中这样做,直接答案是否定的.但是,你们有一个更好的教育答案,为什么RFC类被用于上面提到的另一种选择?