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. nosql - mongodb 多组数据不固定字段查询问题 [百度党请绕道]2. 如何解决docker宿主机无法访问容器中的服务?3. javascript - 关于微信扫一扫的技术问题4. javascript - 跨域读取网站接口获取数据遭遇堵截5. 微信小程序支持跳转到外部链接网页吗6. HTML5不支持frameset一般怎么解决?7. 无法转换为java.lang.Throwable8. css3 - border-bottom 的长度可否超过盒子的宽度呢?实现如下图效果。(我的书下面的线)9. redis - 究竟是选择微信小程序自带的统计工具还是自己开发一个数据统计的代码?10. javascript - vue-cli项目中,获取微信access_token时遇到的跨域问题
![nosql - mongodb 多组数据不固定字段查询问题 [百度党请绕道]](http://www.haobala.com/attached/image/14.jpg)