public static void main(String[] args) throws Exception {
String key = "test";
String src = "111";

SecretKey deskey = null;

String Algorithm = "DESede"; // 加密算法
KeyGenerator gen = KeyGenerator.getInstance(Algorithm);   //实例化(对称加密)密钥生成器

//或用做"IBMSecureRandom",提供强加密随机数生成器
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");  

secureRandom.setSeed(key.getBytes());// 重新设置此随机对象的种子。

deskey =  gen.generateKey();  //生成 密钥

gen = null;//将密钥生成器置空,gc回收
System.out.println("密钥:" + deskey.toString());
//============================================= 生成密钥

//实例化(为加密和解密提供密码功能)
Cipher c1 = Cipher.getInstance(Algorithm + "/ECB/PKCS5Padding");  

c1.init(Cipher.ENCRYPT_MODE, deskey);   //设置加密模式

byte[] encoded = c1.doFinal(src.getBytes("UTF-8"));   //执行加密
//import org.bouncycastle.util.encoders.Base64;
String destCode = new String(Base64.encode(encoded));   //Base64编码 密文
//============================================= 生成密文

System.out.println("密文:"+destCode.toString());

}

解决方案 »

  1.   

    每次运行key都不一样,加密结果当然不一样
      

  2.   

    唉。。每次的加密key都不一样,结果能一样么。
      

  3.   


    deskey =  gen.generateKey();  //生成 密钥
    你的程序里每次都生成了,可以提前生成,并保存到文件,然后加解密读取文件即可
      

  4.   

    再问个问题,org.apache.xml.security.Init.init()是什么作用。