java中的DESede解密使用CryptDeriveKey方法生成的密钥在C#中加密的块
我有一个数据块,可以用C#解密,代码如下:java中的DESede解密使用CryptDeriveKey方法生成的密钥在C#中加密的块,java,encryption,salt,tripledes,Java,Encryption,Salt,Tripledes,我有一个数据块,可以用C#解密,代码如下: PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, salt); byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, iv); var csp = new TripleDESCryptoServiceProvider(); csp.Mode = CipherMo
PasswordDeriveBytes pdb = new PasswordDeriveBytes(password, salt);
byte[] key = pdb.CryptDeriveKey("TripleDES", "SHA1", 192, iv);
var csp = new TripleDESCryptoServiceProvider();
csp.Mode = CipherMode.CBC;
csp.IV = iv;
csp.Key = key;
csp.Padding = PaddingMode.None;
var plainTextBytes = new byte[32*1024];
var decryptor = csp.CreateDecryptor();
int decr = decryptor.TransformBlock(cipherText, 0, cipherText.Length, plainTextBytes, 0);
我的主要目标是用java做同样的事情。我正试图用这个解决方案来解决这个问题
这是我的密码:
PasswordDeriveBytes myPass = new PasswordDeriveBytes(password, salt);
SecretKeyFactory kf;
try {
Cipher desEDE = Cipher.getInstance("DESede/CB/NoPadding");
kf = SecretKeyFactory.getInstance("DESede");
key = myPass.getBytes(192);
desEDEKey= kf.generateSecret(new DESedeKeySpec(key));
byte[] iv = DatatypeConverter.parseBase64Binary(ivText);
desEDE.init(Cipher.DECRYPT_MODE, desEDEKey, new IvParameterSpec(iv));
byte[] ct = desEDE.doFinal(DatatypeConverter.parseBase64Binary(texts));
}
问题在于C#cryptedrviedkey创建的密钥不等于java中使用getBytes(192)生成的密钥。当这个键刚刚从C#复制到java时,所有这些都可以正常工作,所以问题就在这里。请帮助将CryptDeriveKey(“TripleDES”、“SHA1”、192、iv)算法正确移植到java