Java:密码包(加密和解密)。无效的密钥错误
AES-256(和AES-192)要求为JRE安装无限强度管辖策略文件(最后一次下载为http://java.sun.com/javase/downloads/index.jsp)。如在您的类中那样,如果没有这种支持,则会在尝试使用192位或256位密钥时导致InvalidKeyException。
《Java6的JCA参考指南》中记录了AES允许的最大密钥大小,没有无限的强度,因此恰好是128位。
解决方法我正在使用静态方法在类中使用javax.crypto加密和解密消息。我有2个使用cipher和dcipher的静态方法,以完成他们应该做的事情,我需要初始化一些变量(也是静态的)。但是,当我尝试使用它时,我得到的InvalidKeyException与我提供给ecipher.init(…)的参数。我找不到原因。这是代码:
private static byte[] raw = {-31,17,7,-34,59,-61,-60,-16,26,87,-35,114,-53,99,-116,-82,-122,68,47,-3,-17,-21,-50,126,119,-106,-119,-5,109,98}; private static SecretKeySpec skeySpec; private static Cipher ecipher; private static Cipher dcipher; static {try { skeySpec = new SecretKeySpec(raw,'AES'); // Instantiate the cipher ecipher = Cipher.getInstance('AES'); dcipher = Cipher.getInstance('AES'); ecipher.init(Cipher.ENCRYPT_MODE,skeySpec); dcipher.init(Cipher.DECRYPT_MODE,skeySpec);} catch (NoSuchAlgorithmException e) { throw new UnhandledException('No existe el algoritmo deseado',e);} catch (NoSuchPaddingException e) { throw new UnhandledException('No existe el padding deseado',e);} catch (InvalidKeyException e) { throw new UnhandledException('Clave invalida',e);} }
相关文章:
1. docker gitlab 如何git clone?2. java报错Communications link failure 该如何解决?3. android - 项目时间长了,字符串文件strings有的字符串可能是多余的,有没有办法快速检测那些是没用的?4. javascript - 怎么看网站用了什么技术框架?5. mysql - 用PHPEXCEL将excel文件导入数据库数据5000+条,本地数据库正常,线上只导入15条,没有报错,哪里的问题?6. angular.js使用$resource服务把数据存入mongodb的问题。7. 刷新页面出现弹框8. 关于Android权限的获取问题,大家遇到过这样的情况嘛?9. angular.js - angularJs ngRoute怎么在路由传递空字符串及用ng-switch取得10. PC 手机兼容的 编辑器
