JCE無限制權限策略文件


因為某些國家的進口管制限制,Java發布的運行環境包中的加解密有一定的限制。比如默認不允許256位密鑰的AES加解密,解決方法就是修改策略文件。

對於Java 8 Update 144和更早版本,需要安裝Java密碼學擴展(JCE)無限強度管轄權策略文件:

  1. 此處下載無限強度的JCE策略文件
  2. 解壓縮下載的文件
  3. $JAVA_HOME/jre/lib/security提取的無限強度策略JAR文件替換現有的策略JAR文件

注意:如果您以后決定恢復到原始的受限策略版本,請首先在中備份原始JCE策略文件(US_export_policy.jar和local_policy.jar)$JAVA_HOME/jre/lib/security

Java 8 Update 151及更高版本

包括了“無限強度管轄策略”,但默認情況下不使用。要啟用它,您需要java.security$JAVA_HOME/jre/lib/security(對於JDK)或$JAVA_HOME/lib/security(對於JRE)中編輯文件取消注釋(或包括)該行:

crypto.policy=unlimited

官方網站提供了JCE無限制權限策略文件的下載:

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

使用反射修改JDK關鍵代碼

//這里是通過反射移除了isRestricted 的變量修飾符:final
//然后將isRestricted 賦值為false即可
static {
   //break JCE crypto policy limit
   try {
       Class<?> clazz = Class.forName("javax.crypto.JceSecurity");
       Field nameField = clazz.getDeclaredField("isRestricted");
Field modifiersField
= Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(nameField, nameField.getModifiers() & ~Modifier.FINAL); nameField.setAccessible(true); nameField.set(null, java.lang.Boolean.FALSE); } catch (Exception ex) { ex.printStackTrace(); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM