Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
java中的DESede解密使用CryptDeriveKey方法生成的密钥在C#中加密的块_Java_Encryption_Salt_Tripledes - Fatal编程技术网

java中的DESede解密使用CryptDeriveKey方法生成的密钥在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

我有一个数据块,可以用C#解密,代码如下:

    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