将基于Java 256位密码的加密转换为C#

时间:2017-09-06 20:19:22

标签: java c# encryption hmac pbkdf2

我需要在C#中实现一个API,它将以与java编写的API相同的方式加密秘密。

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相同的秘密?

0 个答案:

没有答案