c# – RFC2898DeriveBytes如何生成AES密钥?
我看到了一些代码
string password = "22222111"; byte[] salt = Encoding.ASCII.GetBytes("22222222"); Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password,salt); RijndaelAlg.Key = key.GetBytes(RijndaelAlg.KeySize / 8); 我可以看到密钥是由Rfc2898DeriveBytes生成的密码和盐.然后AES通过GetBytes检索密钥. 但问题是,RFC2898DeriveBytes做了什么以及key.GetBytes(cb)做了什么?任何人都可以详细说明吗?我无法从文档中获取它. 解决方法
RFC2898是指2000年9月发布的基于密码的加密规范.实际上,Rfc2898DeriveBytes使用密码和salt来生成密钥.它使用的方法称为PBKDF2(基于密码的密钥派生函数#2),并在RFC2898的5.2节中定义.从第5.2节:
有关详细信息,请参阅RFC2898. 至于Rfc2898DeriveBytes.GetBytes的作用,它会在每次调用时返回一个不同的键;它实际上只是使用相同的密码和盐重复应用PBKDF2,但也是迭代计数. 这在RFC doc中概述,其中PBKDF2定义为 PBKDF2 (P,S,c,dkLen) 其中P是密码,S是盐,c是迭代计数,dkLen是所需密钥的长度. RFCs一般非常有趣,历史上非常重要. RFC 1149非常重要,RFC 2324也是如此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |