簡體   English   中英

是否可以將 JCE 策略文件與 Java 程序捆綁在一起

[英]Is it possible to bundle JCE policy files with java program

我想要具有 256 位密鑰大小的 GCM 模式的 AES。 目前,這會導致:

Error java.security.InvalidKeyException: Illegal key size

顯然,這是由於加密的出口限制,我需要從Oracle安裝Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 我認為要求我的應用程序的用戶為了運行我的應用程序而修改他們的 JRE 太過分了。 是否可以將加密擴展策略文件捆綁到我的應用程序中?

我發現這個問題與您的問題非常相似使用需要在 openjre 中使用 Java 策略文件的加密

但是接受的答案對我不起作用。 試試這個

Field gate = Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted");
gate.setAccessible(true);
gate.setBoolean(null, false);
Field allPerm = Class.forName("javax.crypto.CryptoAllPermission").getDeclaredField("INSTANCE");
allPerm.setAccessible(true);
Object accessAllAreasCard = allPerm.get(null);
final Constructor<?> constructor = Class.forName("javax.crypto.CryptoPermissions").getDeclaredConstructor();
constructor.setAccessible(true);
Object coll = constructor.newInstance();
Method addPerm = Class.forName("javax.crypto.CryptoPermissions").getDeclaredMethod("add", java.security.Permission.class);
addPerm.setAccessible(true);
addPerm.invoke(coll, accessAllAreasCard);
Field defaultPolicy = Class.forName("javax.crypto.JceSecurity").getDeclaredField("defaultPolicy");
defaultPolicy.setAccessible(true);
defaultPolicy.set(null, coll);

兼容性

  • JRE 7:好的

  • JRE 8 u101:好的

  • JRE 8 u112:失敗Can not set static final boolean field javax.crypto.JceSecurity.isRestricted to (boolean)false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM