I need to implement an API in C# that'll encrypt secrets identically to the API written in java.
The Java code looks like this
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");
My attempt on C# code looks like this
var secret = KeyDerivation.Pbkdf2(
password, salt, KeyDerivationPrf.HMACSHA256, iteration, size);
When I compare the generated secrets, converted the to base 64, they're not the same. Their length are couple hundreds characters off as well.
What's missing from the C# code to generate the same secret as the Java API?