日期:2014-05-20  浏览次数:20679 次

用C或delphi实现DES加密用JAVA不能解密,一个简单而又复杂的问题,高手请进!
密钥:129**129
明文:abcd
c或delphi的密文是一样的:CC500A00B887A418
Java的密文:9861945F94A2416F
这两个密文在各自的解密方法下都可以还原明文,就是不能互相还原,不知道问题在哪里??

附:

java的实现:
package   test;

/**
  *   <p> Title:   </p>
  *
  *   <p> Description:   </p>
  *
  *   <p> Copyright:   Copyright   (c)   2007 </p>
  *
  *   <p> Company:   </p>
  *
  *   @author   not   attributable
  *   @version   1.0
  */
import   java.security.*;
import   javax.crypto.Cipher;
import   javax.crypto.SecretKey;
import   javax.crypto.SecretKeyFactory;
import   javax.crypto.spec.DESKeySpec;

/**
  *   字符串工具集合
  *   @author   Liudong
  */
public   class   StringUtils   {

        private   static   final   String   PASSWORD_CRYPT_KEY   =   "128**128 ";
        private   final   static   String   DES   =   "DES ";

        /**
          *   加密
          *   @param   src   数据源
          *   @param   key   密钥,长度必须是8的倍数
          *   @return   返回加密后的数据
          *   @throws   Exception
          */
        public   static   byte[]   encrypt(byte[]   src,   byte[]   key)   throws   Exception   {
//DES算法要求有一个可信任的随机数源
                SecureRandom   sr   =   new   SecureRandom();
//   从原始密匙数据创建DESKeySpec对象
                DESKeySpec   dks   =   new   DESKeySpec(key);
//   创建一个密匙工厂,然后用它把DESKeySpec转换成
//   一个SecretKey对象
                SecretKeyFactory   keyFactory   =   SecretKeyFactory.getInstance(DES);
                SecretKey   securekey   =   keyFactory.generateSecret(dks);
//   Cipher对象实际完成加密操作
                Cipher   cipher   =   Cipher.getInstance(DES);
//   用密匙初始化Cipher对象
                cipher.init(Cipher.ENCRYPT_MODE,   securekey,   sr);
//   现在,获取数据并加密
//   正式执行加密操作
                return   cipher.doFinal(src);
        }

        /**
          *   解密
          *   @param   src   数据源
          *   @param   key   密钥,长度必须是8的倍数
          *   @return   返回解密后的原始数据
          *   @throws   Exception
          */
        public   static   byte[]   decrypt(byte[]   src,   byte[]   key)   throws   Exception   {
//   DES算法要求有一个可信任的随机数源