zoukankan      html  css  js  c++  java
  • java.security.InvalidKeyException: Illegal key size

    最近在研究一个java框架的破解,已经通过javaagent绕过证书激活实现破解了,下一步打算逆向推算出证书的生成算法,目前来看是可行的(有点失落,意料之中的情况,框架开发者既然已经使用加密了就不会不采用非对称加密啊,原来先对称加密再非对称加密再对称加密),重要的不是结果是过程。比如今天就有很多新东西。记录其中一个。


     SecretKeySpec secretKeySpec = new SecretKeySpec(aesKey, "AES");
            Cipher cipher = Cipher.getInstance("AES/CTR/NoPadding");
            IvParameterSpec ips = createCtrIv(nonce);
            cipher.init(1, secretKeySpec, ips);    //当代码运行到这一行时就报错了。爆出上面的异常


    异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥长度是受限制的, java运行时环境读到的是受限的policy文件. 文件位于${java_home}/jre/lib/security, 这种限制是因为美国对软件出口的控制.

    解决方案:去官方下载JCE无限制权限策略文件。

    jdk 5: http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jce_policy-1.5.0-oth-JPR

    jdk6: http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

    JDK7的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
    JDK8的下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html 

    下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
    如果安装了JRE,将两个jar文件放到%JRE_HOME%libsecurity目录下覆盖原来的文件
    如果安装了JDK,还要将两个jar文件也放到%JDK_HOME%jrelibsecurity目录下覆盖原来文件。

     





  • 相关阅读:
    AsyncTask,MailTask,ScheduledTask
    Mysql的事务理解
    MySQL初识
    HTTP 的原理零散知识点
    SpringBoot简单搭建开发
    Android 的生命周期
    C51 虚拟元器件
    JavaSE 知识整合 (更新中……)
    java关键字篇
    Android开启网络权限
  • 原文地址:https://www.cnblogs.com/llhl/p/9648622.html
Copyright © 2011-2022 走看看