利用jce的3des加密得到的密文和用.net framework的3des加密组件加密得到的密文不一致,我是做一个与另一方的接口,对方的加密是用.net framework的3des算法做的,给出的规范是:初始向量为0,其余为组件默认,得到的密文用base64编码。另外我用jce里3des加密的密文无法用对方的解密部分解出。我给出一个用对方算法加密的例子:明文,3FD3A3DABD10B0FF6EAFB5A0103D386EAF6E3F8CAED6CD93,密钥,3FD3A3DABD10B0FF6EAFB5A0103D386EAF6E3F8CAED6CD93,密文,qZqcGzTyukIIu4/xSkZij+yvcbTANLlhn1Wht6Oo9YPsHvV5ScnSNBs9n1kTyeaWUWsTxUHs66Y=。我的代码:
import javax.crypto.*;
import javax.crypto.spec.*;
import javax.crypto.spec.DESedeKeySpec;
import java.security.spec.KeySpec;
import java.security.spec.AlgorithmParameterSpec
import java.security.*;String hexstr="3FD3A3DABD10B0FF6EAFB5A0103D386EAF6E3F8CAED6CD93";
String algorithm="DESede";Security.addProvider(new com.sun.crypto.provider.SunJCE());
 byte[] b = hexstr.getBytes();DESedeKeySpec keyspec = new DESedeKeySpec(b);
SecretKeyFactory keyfactory = SecretKeyFactory.getInstance(algorithm);
Key enkey = keyfactory.generateSecret(keyspec);
Cipher c1 = Cipher.getInstance("DESede");
c1.init(Cipher.ENCRYPT_MODE,enkey);
byte[] cipherByte=c1.doFinal(hexstr.getBytes());
out.println(new String(EncoderBase64.encode(cipherByte)));我的加密结果是:xMQcirgZJMr69QJ28nxHDA0AlS785ei21FjNQsdyZkztWQowkZ9wpxBPRwvVfiEkJXWuYDHFyOA=