C#的DES加密与解密算法我就不写了,主要写一下怎么去解密C#用DES加密后串,大家都知道C#的DES加密密钥长度是8位的,而java是8的倍数位,所以用普通的java中的DES是不行的,要解C#的加密的串用下面的方法

 
  
  1. /** 
  2.      * 解密c#的des加密串 
  3.      * @param message 
  4.      * @param key 
  5.      * @return 
  6.      * @throws Exception 
  7.      */ 
  8.     public static String desDncrypt(byte[] message, String key) throws Exception { 
  9.         Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); 
  10.          
  11.         DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8")); 
  12.          
  13.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
  14.         SecretKey secretKey = keyFactory.generateSecret(desKeySpec); 
  15.         IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8")); 
  16.         cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); 
  17.         byte[] retByte = cipher.doFinal(message);  
  18.         return new String(retByte); 
  19.     } 

同理,如果java用DES加密让C#去解密呢?用以下方法加密

 
  
  1. public static byte[] desEncrypt(String message, String key) throws Exception { 
  2.         Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); 
  3.  
  4.         DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8")); 
  5.  
  6.         SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
  7.         SecretKey secretKey = keyFactory.generateSecret(desKeySpec); 
  8.         IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8")); 
  9.         cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); 
  10.  
  11.         return cipher.doFinal(message.getBytes("UTF-8")); 
  12.     } 

这样就没有问题了,快去试试吧