问题:
部署使用 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中文网其他相关文章!