.NET: Diferencia entre PasswordDeriveBytes y Rfc2898DeriveBytes

Estoy tratando de entender algunos códigos C #, me han entregado, que se ocupa de la criptografía, y utiliza específicamentePasswordDeriveBytes desdeSystem.Security.Cryptography.

En el .NET docs , dice quePasswordDeriveBytes utiliza "una extensión del algoritmo PBKDF1" que se encuentra más adelante en el documento especificado como "el estándar PKCS # 5 v2.0", que es PBKDF2 (por lo que puedo decir). Sin embargo, en todas partes de la red que he encontrado (incluso aquí en Stack Exchange), todos dicen "use Rfc2898DeriveBytes, porque la contraseña * 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 puede decirme cuál es la diferencia entre las dos clases (si las hay) y por qué debería usar una en lugar de la otra para la derivación de 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 efectivamentePasswordDeriveBytes también usa PBKDF2, o que PBKDF2 es simplemente compatible con PBKDF1 bajo ciertas circunstancias, pero quiero saber con certeza que no es un efecto secundario de algo aleatorio, y que las cosas simplemente funcionan mágicamente (y eventualmente probablemente se romperán mágica y espectacularmente ) sin que nadie entienda realmente por qué.