Problème :
Déploiement d'applications qui utilisent le cryptage AES 256 bits, ce qui n'est pas le cas initialement pris en charge par Java, nécessite l'installation de fichiers de stratégie JCE « Unlimited Strength ». Cela pose des problèmes pour la distribution aux utilisateurs finaux.
Java Reflection propose une approche unique pour contourner ces limitations :
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)); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!