加密解密时的key值问题

zuoyangguang 2007-08-17 03:19:46
这段代码是web开发时用 Cipher.getInstance("DESEDE/ECB/PKCS5Padding");加密解密的key值,当web启动后,数据经过这个key加密,存入数据库,取出来经过这个key值解密,当然没有问题,问题是,当web服务器重启,key值会发生变化,取出来的数据就不能通过解密还原,请问如何解决
SecureRandom sr = new SecureRandom(SecurityConstance.DEFAULT_PRIVATE_KEY.getBytes("UTF-8"));
KeyGenerator kGen = KeyGenerator.getInstance("DESEDE");
kGen.init(168, sr);
Key key = kGen.generateKey();
defaultDesEncrypt = new DESEncrypt(key);
defaultDesDecrypt = new DESDecrypt(key);
...全文
329 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoyangguang 2007-08-17
  • 打赏
  • 举报
回复
up
yangxccom 2007-08-17
  • 打赏
  • 举报
回复
key每次生成都会不同的,你须要把key保存起来,以供使用.如下就是把它存到文件中
KeyGenerator keygen=KeyGenerator.getInstance("AES");
SecureRandom random =new SecureRandom();
keygen.init(random);
SecretKey key=keygen.generateKey();
ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("kmpassword.key"));
out.writeObject(key);
out.close();
当然,你也可存到别的地方,如数据库等
孟子E章 2007-08-17
  • 打赏
  • 举报
回复
给他个固定的种子

String s = "xxxxx";
String Algorithm = "DES"; // 定义 加密算法,可用 DES,DESede,BlowfishKeyGenerator keygen = KeyGenerator.getInstance(Algorithm);
keygen.init(new SecureRandom(s.getBytes()));
SecretKey deskey = keygen.generateKey();

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧