PBKDF2 mise en œuvre en C# avec Rfc2898DeriveBytes

Les gars, je suis en train de mettre en œuvre une fonction PBKDF2 en C# qui crée une clé Partagée WPA. J'ai trouvé ici: http://msdn.microsoft.com/en-us/magazine/cc163913.aspx qui semble produire un résultat valide, mais c'est un octet trop court... et le mauvais PSK valeur.

Pour tester la sortie, je suis en la comparant à ce: http://www.xs4all.nl/~rjoris/wpapsk.html ou http://anandam.name/pbkdf2/

Je n'ai trouver un moyen de faire ce travail avec construit dans la bibliothèque C#, appelé Rfc2898DeriveBytes. En utilisant ceci, j'obtiens un résultat valide à l'aide de:

Rfc2898DeriveBytes k3 = new Rfc2898DeriveBytes(pwd1, salt1, 4096);
byte[] answers = k3.GetBytes(32);

Maintenant, la seule limitation que j'ai à l'aide de Rfc2898DeriveBytes est le "sel" doit être de 8 octets de long. Si elle est plus courte, la Rfc2898DeriveBytes déclenche une exception. Je pensais à tout ce que j'avais à faire était de pad le sel (si c'était plus court) à 8 octets, et je serais bien. Mais NON! J'ai essayé à peu près toutes les combinaisons de rembourrage avec une courte sel, mais je ne peut pas dupliquer les résultats que j'obtiens à partir de ces deux sites ci-dessus.

Donc la ligne en bas, est-ce à dire que le Rfc2898DeriveBytes tout simplement ne fonctionne pas avec une source de sel plus courte que 8 octets? Si oui, est-ce que quelqu'un sait de tout code C# je pourrais utiliser qui implémente PBKDF2 pour clé Prépartagée WPA?

InformationsquelleAutor Nick | 2009-06-25