.NET: Diferença entre PasswordDeriveBytes e Rfc2898DeriveBytes

Estou tentando entender algum código C #, fui-me entregue, que lida com criptografia e especificamente usaPasswordDeriveBytes a partir deSystem.Security.Cryptography.

No Docs.NET , isso diz quePasswordDeriveBytes usa "uma extensão do algoritmo PBKDF1", posteriormente no documento especificado como "o padrão PKCS # 5 v2.0", que é PBKDF2 (tanto quanto eu sei). Em todos os lugares da rede que encontrei (inclusive aqui no Stack Exchange), todo mundo diz "use Rfc2898DeriveBytes, porque a senha * está obsoleta e usa PBKDF1". Mas a única diferença nos documentos em msdn.microsoft.com parece que a versão Rfc * menciona especificamente PBKDF2, onde Password * diz "extensão de PBKDF1" e "PKCS # 5 v 2.0".

ntão, alguém pode me dizer qual é a diferença entre as duas classes (se houver) e por que devo usar uma em vez da outra para derivação de chave de senha do PBKDF

gora, outro código que lida com os mesmos dados, usa explicitamente PBKDF2 e funciona, de modo que sugere que, de fatPasswordDeriveBytes também usa PBKDF2, ou que PBKDF2 é simplesmente compatível com PBKDF1 sob certas circunstâncias, mas quero ter certeza de que não é algum efeito colateral de alguma coisa aleatória e que as coisas funcionam magicamente (e, eventualmente, provavelmente irão quebrar de maneira mágica e espetacular) ) sem que ninguém entenda o porquê.

questionAnswers(4)

yourAnswerToTheQuestion