整了几天了,搞不定。java用3DES加密后和C#经过3DES加密后的结果不同?是什么原因啊?
有没有给个代码啊?java的!!

解决方案 »

  1.   

    密钥一样吗?
    明文确定完全一致么?包括字符的编码。
    偶以前也用过3DES,C++加密,JAVA解密,没发现什么不对啊。
      

  2.   

    DES是标准的对称加密算法,所以两者的加密应该是相同的,算法采用的密钥长度可以是8bit或者16bit。至于加密的结果不一样,这是因为VI(初始向量)不同。  
       
      DES的起始VI是随机的,所以加密结果不同。但是解密过程是相反的,解密到最后一组字节流的时候就得到了VI,这个VI在解密完成后会被舍弃。所以两种实现的加密的结果不同是没有关系的,同样可以解密。
    KeyGenerator keygen = KeyGenerator.getInstance(Algorithm);SecretKey deskey = keygen.generateKey();用密钥加密明文(myinfo),生成密文(cipherByte)Cipher c1 = Cipher.getInstance(Algorithm);c1.init(Cipher.ENCRYPT_MODE,deskey);byte[] cipherByte=c1.doFinal(myinfo.getBytes());
      

  3.   

    记得好像有3种不同的填充算法。ECB,PKCS5和PKCS7。楼主都换着试试。。
    这个填充好像是在你的密钥不够长度的时候,所采用滴。
    貌似C#用的是PKCS5