又没有考虑编码的问题?
或者空串或者空格(trim)?

解决方案 »

  1.   

    大哥啊!快救我啊!直接对加密后的byte数组解密救没错,如果经过类型转换才会出错,所以类是没错的,关键是转换的哦问题啊!
      

  2.   

    有可能转换出错
    我在用RSA做类似的功能时碰到过,我是转换成16进制字符串传递的,如果密文字节数组的第一个元素<15,那么十六进制表示是0f,0被自动丢掉了
      

  3.   

    建议转换成16进制或者用BASE64编码后传输
      

  4.   

    如上所说用base64等
    javax.mail.internet.MimeUtility有encode和decode method实现
      

  5.   

    sun.misc.BASE64Encoder
    sun.misc.BASE64Decoder
      

  6.   

    哈哈。你看看下面的代码能不能对你有用阿。
    import java.security.*;
    import javax.crypto.*;public class DesedeEx 
      { public static void main(String args[])throws Exception
         {  //加密过程。
            KeyGenerator genkey=KeyGenerator.getInstance("Desede");
            genkey.init(168);
            Key mykey=genkey.generateKey( );
            System.out.println("Generating the key done....");
            System.out.println(mykey);        Cipher cipher=Cipher.getInstance("Desede/ECB/PKCS5Padding");
            cipher.init(Cipher.ENCRYPT_MODE,mykey);
            byte []plaintext=text.getBytes("UTF8");
               //注意把字符串转换成字节需要指定编码方式,一般用此“UTF8”。
            byte[] ciphertext=cipher.doFinal(plaintext);//密文。
            //解密过程。很简单阿。
            cipher.init(Cipher.DECRYPT_MODE,mykey);
            byte[] decryptedText=cipher.doFinal(ciphertext);
            String output=new String(decryptedText,"UTF8");
            //此处指定编码方式了哈哈。肯定行的。
            System.out.println("\n\nDecrypted text:"+output);
           }
    }        
      

  7.   

    问题解决了吗??
    我也碰到了一样的问题。
    加密后得到的byte[]转换成字符串后,写到一个html的超链上,但是下一个服务程序得到后解密时总是出错,错误如上。up说的方法在加密后没有转换成字符串。
      

  8.   

    import sun.misc.*;BASE64Encoder enc=new BASE64Encoder();
    String cipherString=enc.encode(ciphertext);BASE64Decoder dec=new BASE64Decoder();
    ciphertext=dec.decode(cipherString);
      

  9.   

    呵呵,楼主的问题,我帮你试过了,只要把密文用BASE64编码然后传输,接受后再用BASE64解码,然后再解密就可以了,没问题的。