Estoy intentando comprender algún código de C#, me han entregado, que trata de la criptografía, y utiliza específicamente PasswordDeriveBytes
de System.Security.Cryptography
..NET: Diferencia entre PasswordDeriveBytes y Rfc2898DeriveBytes
En el .NET docs, se dice que PasswordDeriveBytes
utiliza "una extensión del algoritmo PBKDF1", que es más tarde en el documento especificado como "el estándar PKCS # 5 v2.0", que es PBKDF2 (por lo que yo puedo decir) En todas partes en la red que he encontrado (incluso aquí en Stack Exchange), todos dicen "use Rfc2898DeriveBytes, porque Password * está en desuso y usa PBKDF1". Pero la única diferencia en los documentos en msdn.microsoft.com parece ser que la versión Rfc * menciona específicamente PBKDF2, donde Password * dice "extensión de PBKDF1" y "PKCS # 5 v 2.0".
Entonces, ¿alguien me puede decir cuál es la diferencia entre las dos clases (si corresponde) y por qué debería usar una en lugar de la otra para la derivación de la clave de contraseña PBKDF2?
Ahora, otro código, que trata con los mismos datos, utiliza explícitamente PBKDF2, y funciona, por lo que sugeriría que de hecho PasswordDeriveBytes
también usa PBKDF2, o que PBKDF2 es simplemente compatible con PBKDF1 bajo ciertas circunstancias, pero quiero Sé con certeza que no es un efecto secundario de algo aleatorio, y que las cosas simplemente funcionan mágicamente (y eventualmente se romperán mágica y espectacularmente) sin que nadie realmente entienda por qué.
Así que, como se sospecha, las cosas funcionan principalmente por casualidad, y no tanto por diseño ... – adamski
No necesariamente, aún podría incluir qué esquema de cifrado/KDF es utilizado por los datos de salida y el "otro código" que la mención es una ruta de código utilizada después de que se haya determinado que el esquema de cifrado utiliza PBKDF2. Realmente no puedo decir "explícitamente usa PBKDF2". – millimoose