InvalidKeyException: Saiz Kunci Haram
Soalan:
Semasa menjalankan ujian secara berterusan penyepaduan pelayan TeamCity, ralat berlaku: "java.security.InvalidKeyException: Saiz kunci yang tidak sah." Ralat ini tidak berlaku semasa menjalankan ujian pada MacBook Pro. Kedua-dua persekitaran menggunakan Java 1.6 dan perpustakaan BouncyCastle.
Jawapan:
Ralat disebabkan oleh sekatan pada saiz kunci kriptografi yang dikenakan oleh dasar mesin maya Java, yang mematuhi dengan eksport AS undang-undang.
Penyelesaian:
Java 9 dan Lebih Tinggi:
- Fail Dasar Bidang Kuasa Kekuatan Tanpa Had disertakan dengan Java 9 dan lebih tinggi secara lalai.
- Jika ralat berterusan, semak fail java.security dan pastikan "crypto.policy=unlimited" tidak dikomen atau disertakan.
Kemas Kini Java 8 161 dan Lebih Tinggi:
- Dasar Bidang Kuasa Kekuatan Tanpa Had didayakan secara lalai.
- Jika ralat berlaku, semak fail java.security untuk sebarang perubahan pada konfigurasi dasar.
Kemas Kini Java 8 151 dan Lebih Tinggi:
- Dasar Bidang Kuasa Kekuatan Tanpa Had disertakan tetapi tidak digunakan secara lalai.
- Untuk mendayakannya, nyahkomen "crypto.policy=unlimited" dalam fail java.security.
- Mulakan semula JVM untuk perubahan berkuat kuasa.
Kemas Kini Java 8 144 dan Terdahulu:
- Pasang Java Cryptography Extension (JCE) Unlimited Fail Dasar Bidang Kuasa Kekuatan daripada Oracle.
- Nyahmampatkan fail yang dimuat turun dan salin fail "local_policy.jar" dan "US_export_policy.jar" ke direktori keselamatan yang sesuai (cth., /lib/security ).
- Mulakan semula JVM untuk menggunakan yang baharu dasar.
Penyelesaian BouncyCastle:
- Beralih kepada menggunakan kelas BouncyCastle secara langsung, bukannya penyedia BC. Kaedah ini memintas had saiz utama.
Atas ialah kandungan terperinci Mengapa Kod Java Saya Membuang `InvalidKeyException: Saiz Kunci Haram` pada Pelayan TeamCity Saya tetapi Bukan MacBook Pro Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!