Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rfc2898DeriveBytes C#结果不同,等价于Java_Java_C#_Encryption - Fatal编程技术网

Rfc2898DeriveBytes C#结果不同,等价于Java

Rfc2898DeriveBytes C#结果不同,等价于Java,java,c#,encryption,Java,C#,Encryption,当我使用方法“Rfc2898DeriveBytes”时,有不同的构造函数 我使用了这两个构造函数,但没有找到相同的结果: C#: 及 在第一种情况下: var pwd = Convert.FromBase64String(_pwd); var salt = Convert.FromBase64String(_salt); var key1 = Rfc2898DeriveBytes(pwd,salt,25); byte[] resultKey1 = key1.GetBytes(16); 在第二种

当我使用方法“Rfc2898DeriveBytes”时,有不同的构造函数

我使用了这两个构造函数,但没有找到相同的结果:

C#:

在第一种情况下:

var pwd = Convert.FromBase64String(_pwd);
var salt = Convert.FromBase64String(_salt);
var key1 = Rfc2898DeriveBytes(pwd,salt,25);
byte[] resultKey1 = key1.GetBytes(16);
在第二种情况下:

var salt = Convert.FromBase64String(_salt);
var key2 = Rfc2898DeriveBytes(_pwd,salt,25);    
byte[] resultKey2 = key2.GetBytes(16);

现在在Java中,等价性是:

SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(PASSWORD.toCharArray(), byteArraySalt, 25, 128);
SecretKey temp = factory.generateSecret(spec);
使用此Java代码,结果与
“resultKey2”
(在C中)相同

那么,我们如何在Java中获得与
“resultKey1”
(C#)相同的结果呢

这是因为无符号/有符号字节吗


提前感谢:-)

在第一种情况下,
\u pwd
实际上是Base64编码的吗?你能给出一个不起作用的
\u pwd
密码的例子吗?例如var salt = Convert.FromBase64String(_salt);
var key2 = Rfc2898DeriveBytes(_pwd,salt,25);    
byte[] resultKey2 = key2.GetBytes(16);
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec spec = new PBEKeySpec(PASSWORD.toCharArray(), byteArraySalt, 25, 128);
SecretKey temp = factory.generateSecret(spec);