linux下解密AES失败的问题

职业乞讨者 2015-03-04 09:01:13
我在linux系统下解密AES失败,上网查了资料说是加上下段代码就能解决:
// 防止linux下 随机生成key
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password.getBytes());

但事实是我加上了这行代码,放到几台机器当中去试时发现,还是解密失败,有大侠遇到过吗?
...全文
434 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
职业乞讨者 2015-03-10
  • 打赏
  • 举报
回复
沉了? 难道没人给点准确意见? jdk不同?
tianfang 2015-03-05
  • 打赏
  • 举报
回复
AES是对称加密,加密/解密的密钥是一个,你解密的时候需要知道密钥,而你贴出来到代码是生成强随机数的代码方法 参考一下: http://blog.csdn.net/ustcxjt/article/details/7442830
职业乞讨者 2015-03-05
  • 打赏
  • 举报
回复
引用 1 楼 yuejingdong 的回复:
kgen.init(128, secureRandom);这句改了么
这句也加上了的, 我用的是Centos 64位的系统
tianfang 2015-03-05
  • 打赏
  • 举报
回复
你的key既然是12345678 传进去就是了 不要再生成了 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 这里key要把12345678转成byte[] 传进去
职业乞讨者 2015-03-05
  • 打赏
  • 举报
回复
初步发现个问题,不知道是不是这个原因,大家帮我分析下: 两台机器系统版本一样都是CentOS6.5,只是JDK版本不同,同样的代码在两台机器下面运行结果不同,如: jdk1.7.0_60运行代码结果正确 jdk1.7.0_45运行代码结果错误 运行错误的机器:(不知道是不是每次生成的强随机数种子不一样还是怎么回事) 结果是每运行一次加密后,每次结果都不一样 运行正确的机器:没有上述情况问题
职业乞讨者 2015-03-05
  • 打赏
  • 举报
回复
引用 3 楼 tianfang 的回复:
AES是对称加密,加密/解密的密钥是一个,你解密的时候需要知道密钥,而你贴出来到代码是生成强随机数的代码方法 参考一下: http://blog.csdn.net/ustcxjt/article/details/7442830
我的加解密的密钥都是一样的:12345678 加密方法: String type = "AES"; KeyGenerator kgen = KeyGenerator.getInstance(type); // 防止linux下 随机生成key SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(password.getBytes()); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, type); Cipher cipher = Cipher.getInstance(type);// 创建密码器 byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化 byte[] result = cipher.doFinal(byteContent); return result; // 加密 解密方法: KeyGenerator kgen = KeyGenerator.getInstance(type); // 防止linux下 随机生成key SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(password.getBytes()); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, type); Cipher cipher = Cipher.getInstance(type);// 创建密码器 cipher.init(Cipher.DECRYPT_MODE, key);// 初始化 byte[] result = cipher.doFinal(content); return result; // 解密
yuejingdong 2015-03-04
  • 打赏
  • 举报
回复
kgen.init(128, secureRandom);这句改了么

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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