問題:
部署使用256 位元AES 加密的應用程序,這不是最初由Java 支持,需要安裝「無限強度」JCE 策略檔案。這給最終用戶分發帶來了挑戰。
Java反射提供了一種獨特的方法來繞過這些限制:
public static void removeCryptographyRestrictions() { // Use reflection to modify private JCE Security classes: Class<?> jceSecurity = Class.forName("javax.crypto.JceSecurity"); Field isRestrictedField = jceSecurity.getDeclaredField("isRestricted"); isRestrictedField.setAccessible(true); isRestrictedField.set(null, false); Field defaultPolicyField = jceSecurity.getDeclaredField("defaultPolicy"); defaultPolicyField.setAccessible(true); PermissionCollection defaultPolicy = (PermissionCollection) defaultPolicyField.get(null); Field permsField = Class.forName("javax.crypto.CryptoPermissions").getDeclaredField("perms"); permsField.setAccessible(true); ((Map<?, ?>) permsField.get(defaultPolicy)).clear(); Field instanceField = Class.forName("javax.crypto.CryptoAllPermission").getDeclaredField("INSTANCE"); instanceField.setAccessible(true); defaultPolicy.add((Permission) instanceField.get(null)); }
以上是如何在不安裝策略檔案的情況下在 Java 中啟用 256 位元 AES 加密?的詳細內容。更多資訊請關注PHP中文網其他相關文章!