Masalah:
Menggunakan aplikasi yang menggunakan penyulitan AES 256-bit, yang bukan disokong oleh Java pada mulanya, memerlukan pemasangan fail dasar JCE "Kekuatan Tanpa Had". Ini menimbulkan cabaran untuk pengedaran pengguna akhir.
Java Reflection menawarkan pendekatan unik untuk memintas batasan ini:
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)); }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendayakan Penyulitan AES 256-bit dalam Java Tanpa Memasang Fail Dasar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!