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

那位指点下DES加密解密问题
问题出在解密上   demo   加密完后返回[B@d80be3   再解密返回不了demo字符串
请教   代码可以直接运行

package   des;

import   java.security.SecureRandom;
import   javax.crypto.spec.DESKeySpec;
import   javax.crypto.KeyGenerator;
import   javax.crypto.SecretKeyFactory;
import   javax.crypto.SecretKey;
import   javax.crypto.Cipher;
import   java.security.NoSuchAlgorithmException;

public   class   TestDes   {
    /**
      *
      *   @return   DES算法密钥
      */
    public   static   byte[]   generateKey()   {
        try   {

            //   DES算法要求有一个可信任的随机数源
            SecureRandom   sr   =   new   SecureRandom();

            //   生成一个DES算法的KeyGenerator对象
            KeyGenerator   kg   =   KeyGenerator.getInstance( "DES ");
            kg.init(sr);

            //   生成密钥
            SecretKey   secretKey   =   kg.generateKey();

            //   获取密钥数据
            byte[]   key   =   secretKey.getEncoded();

            return   key;
        }
        catch   (NoSuchAlgorithmException   e)   {
            System.err.println( "DES算法,生成密钥出错! ");
            e.printStackTrace();
        }

        return   null;
    }

    /**
      *   加密函数
      *
      *   @param   data
      *                         加密数据
      *   @param   key
      *                         密钥
      *   @return   返回加密后的数据
      */
    public   static   byte[]   encrypt(byte[]   data,   byte[]   key)   {

        try   {

            //   DES算法要求有一个可信任的随机数源
            SecureRandom   sr   =   new   SecureRandom();

            //   从原始密钥数据创建DESKeySpec对象
            DESKeySpec   dks   =   new   DESKeySpec(key);

            //   创建一个密匙工厂,然后用它把DESKeySpec转换成
            //   一个SecretKey对象
            SecretKeyFactory   keyFactory   =   SecretKeyFactory.getInstance( "DES ");
            SecretKey   secretKey   =   keyFactory.generateSecret(dks);

            //   Cipher对象实际完成加密操作
            Cipher   cipher   =   Cipher.getInstance( "DES ");