Перевод Java 256-битного шифрования на основе пароля на C#
Мне нужно реализовать API в C#, который будет шифровать секреты идентично API, написанному на Java.
Код Java выглядит следующим образом
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(password, salt, iteration, size);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "HmacSHA256");
Моя попытка на C# выглядит так
var secret = KeyDerivation.Pbkdf2(
password, salt, KeyDerivationPrf.HMACSHA256, iteration, size);
Когда я сравниваю сгенерированные секреты, преобразованные в базу 64, они не совпадают. Их длина составляет пару сотен символов.
Чего не хватает в коде C# для генерации того же секрета, что и Java API?