• 一场由jdk8小版本引起的血案


    在公司实现一个需求,其中需要实现AES加密敏感数据,开发ok,测试ok,流程全部跑通,一切ok,测试小姐姐还在抱怨没有bug可提完不成指标(哈哈,这tm还有指标)。
    合代码、上线!线上验证时,悲剧发生了。。。
    一个血淋淋的异常现场摆在面前:

     1 Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size or default parameters
     2 at com.example.demo.AESUtil.encryptService(AESUtil.java:96)
     3 at com.example.demo.AESUtil.encrypt(AESUtil.java:70)
     4 at com.example.demo.DataEncUtil.encrypt(DataEncUtil.java:23)
     5 at com.example.demo.DemoApplication.main(DemoApplication.java:9)
     6 ... 8 more
     7 Caused by: java.security.InvalidKeyException: Illegal key size or default parameters
     8 at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
     9 at javax.crypto.Cipher.init(Cipher.java:1245)
    10 at javax.crypto.Cipher.init(Cipher.java:1186)
    11 at com.example.demo.AESUtil.encryptService(AESUtil.java:92)
    12 ... 11 more

    卧槽,什么情况,紧急回退后再次review代码,没问题啊,主分支丢到测试环境还是那么完美。。。


    翻阅资料,发现,oracle(sun)在jdk中做了一些限制:
    在我们安装的JRE目录下有这样一个文件夹:%JAVE_HOME%jrelibsecurity,其中包含有两个.jar文件:“local_policy.jar ”和“US_export_policy.jar”
    因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在一些问题:
    ●密钥长度上不能满足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters);
    ●部分算法未能支持,如MD4、SHA-224等算法;
    ●API使用起来还不是很方便;一些常用的进制转换辅助工具未能提供,如Base64编码转换、十六进制编码转换等工具。
    Sun被Oracle收购以后,Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在JRE环境中,就可以解决限制问题。
    JDK8 jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
    JDK7 jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
    JDK6 jar包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html
    把里面的两个jar包:local_policy.jar 和 US_export_policy.jar 替换掉原来jdk安装目录%JAVE_HOME%jrelibsecurity 下的两个jar包接可以了。


    另外,在这篇文章中也得知jdk在.java 8 161以上已经不再限制密钥长度。回头看到测试机的版本在161以上,线上则是111,所以也就证实了这一分析。
    https://blog.csdn.net/tangtao_xp/article/details/84944049

  • 相关阅读:
    [轉][Windows] 已啟用Win7遠端桌面,從家中連回去卻無法連線?
    [轉]False SQL Injection and Advanced Blind SQL Injection
    SQL Injection with INFORMATION_SCHEMA (Mysql)
    Exploiting hard filtered SQL Injections
    Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
    12个月内自学完成4年麻省理工学院计算机科学的33门课程的scotthyoung所谓的超速学习理论&方法(费曼技巧)?
    SQLi filter evasion cheat sheet (MySQL)
    [轉]字符形注入
    [轉]渗透测试必备Firefox全套渗透装
    Phpexcel範例
  • 原文地址:https://www.cnblogs.com/steve-jiang/p/11597160.html
Copyright © 2020-2023  润新知