我想你的"DDE57E49A4ACBF7B"应该并不是说直接getBytes的
应该是
byte[] buf = new byte[myinfo.length()/2];
for(int i = 0; i < myinfo.length() / 2; i++) {
  buf[i] = Integer.parseInt(myinfo.substring(i*2,i*2+2),16);
}
c1.doFinal(buf);

解决方案 »

  1.   

    ChDw(米) 朋友
    还是不行.
        byte[] key = "teddygir".getBytes(); 
        byte[] src = "3134".getBytes(); 
         
        
        byte[] des2 = (new String("DDE57E49A4ACBF7B")).getBytes();
        byte[] tt = new byte[8];
        tt[0] = (byte) 0Xdd;
        tt[1] = (byte) 0Xe5;
        tt[2] = (byte) 0X7e;
        tt[3] = (byte) 0X49;
        tt[4] = (byte) 0Xa4;
        tt[5] = (byte) 0Xac;
        tt[6] = (byte) 0Xbf;
        tt[7] = (byte) 0X7B;    byte[] des = encrypt(src, key);
        System.out.println("des" + des.length + "\n");
        //System.out.println(byte2hex(des)); 
        
        System.out.println("before decrypt");
        des = decrypt(tt,key); 
        System.out.println("after decrypt");
         
        System.out.println(byte2hex(des)); 
         
        System.out.println(new String(des));代码是这样的,因为DDE57E49A4ACBF7B串中我们是要变成16进制的
    结果报个错是:
    javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.SunJCE_h.b(DashoA6275)
    at com.sun.crypto.provider.SunJCE_h.b(DashoA6275)
    at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA6275)
    at javax.crypto.Cipher.doFinal(DashoA6275)
    at com.keem.kit.crypto.DES64.decrypt(DES64.java:122)
    at com.keem.kit.crypto.DES64.main(DES64.java:192)
      

  2.   

    Cipher c1 = Cipher.getInstance("DES/CBC/PKCS5Padding");
    这一句改成这个样子试一下。