public class DES { /**
 * @param args
 */
public static void main(String[] args) {

byte[] bb = enc();
dec(bb);
}
private static byte[] enc()
{

byte[] c = null;
try{
byte[] m = null;
KeyGenerator kg = KeyGenerator.getInstance("DES");
SecretKey sk = kg.generateKey();
m = "Hello Des World".getBytes();

Cipher ch = Cipher.getInstance("DES");
ch.init(Cipher.ENCRYPT_MODE, sk);

c = ch.doFinal(m);
System.out.println("after uncodeing:" + new String(c));

}catch(Exception e){
System.out.println(e);
}
return c;
}

private static void dec(byte[] c)
{
try{
KeyGenerator kg = KeyGenerator.getInstance("DES");
SecretKey sk = kg.generateKey();
Cipher ch = Cipher.getInstance("DES"); ch.init(Cipher.DECRYPT_MODE, sk);
System.out.println("bb");
byte[] m2 = ch.doFinal(c);
System.out.println("ccc");
System.out.println("after uncodeing:" + new String(m2));

}catch(Exception e){
System.out.println(e);
}

}
}
================
javax.crypto.BadPaddingException: Given final block not properly padded为什么阿?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【InternetEmail】截止到2008-07-01 21:19:52的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:100                      
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    package test;import java.security.NoSuchAlgorithmException;import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;public class DES { /**
     * @param args
     */
    public static void main(String[] args) { byte[] bb = enc();
    dec(bb);
    } static KeyGenerator kg;
    static SecretKey sk;
    static Cipher ch;
    static {
    try {
    kg = KeyGenerator.getInstance("DES");
    } catch (NoSuchAlgorithmException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    sk = kg.generateKey();
    try {
    ch = Cipher.getInstance("DES");
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    } catch (NoSuchPaddingException e) {
    e.printStackTrace();
    }
    } private static byte[] enc() { byte[] c = null;
    try {
    byte[] m = null; m = "Hello Des World".getBytes(); Cipher ch = Cipher.getInstance("DES");
    ch.init(Cipher.ENCRYPT_MODE, sk);
    c = ch.doFinal(m);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return c;
    } private static void dec(byte[] c) {
    try { ch.init(Cipher.DECRYPT_MODE, sk);
    byte[] m2 = ch.doFinal(c);
    } catch (Exception e) {
    e.printStackTrace();
    } }
    }
      

  3.   

    加密 解密要用同一个key
    否则报错
      

  4.   

    DES是对称加密算法,加解密必须用同一密钥,否则出错
      

  5.   

    DES的Key需要>=8个字节长度,而它实际上只用前8个字节,你的Key只有3个字节