Install Unrestricted policy files di Java Crypto


Normalnya key yang dapat digunakan di java crypto adalah tidak lebih dari 128 bit (terkecuali untuk 3DES) dan RSA yang dibatasi sampai 2048 bit. Bagaimana jika kita ingin mengunakan kunci lebih dari 128 misal untuk symetric algorithm seperti blowfish 192 bit?
untuk itu kita perlu mengaktifkan unrestrited policy files, untuk java7 dapat didownload di http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
dan java8 di http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

setelah itu jika menggunakan linux replace file kedalam direktori jvm sebagai berikut: /usr/lib/jvm/java-8-oracle/jre/lib/security US_export_policy.jar dan local_policy.jar dengan file yg kita download sebelumnya.
untuk linux diperlukan akses root untuk mereplace kedua file tersebut

gunakan script dibawah ini untuk mengetest apakan Policy sudah di unrestricted


import javax.crypto.*;
import javax.crypto.spec.*;
public class SimplePolicyTest
{
public static void main(String[] args) throws Exception
{
byte[] data = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
// create a 64 bit secret key from raw bytes
SecretKey key64 = new SecretKeySpec(
new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 },
"Blowfish");
// create a cipher and attempt to encrypt the data block with our key
Cipher c = Cipher.getInstance("Blowfish/ECB/NoPadding");
c.init(Cipher.ENCRYPT_MODE, key64);
c.doFinal(data);
System.out.println("64 bit test: passed");
// create a 192 bit secret key from raw bytes
SecretKey key192 = new SecretKeySpec(
new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 },
"Blowfish");
// now try encrypting with the larger key
c.init(Cipher.ENCRYPT_MODE, key192);
c.doFinal(data);

System.out.println("192 bit test: passed");
System.out.println("Tests completed");
}
}

Jika sukses maka print di console sebagai berikut
64 bit test: passed
192 bit test: passed
Tests completed

jika tidak maka:
64 bit test: passedException in thread “main”
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1026)
at javax.crypto.Cipher.init(Cipher.java:1245)
at javax.crypto.Cipher.init(Cipher.java:1186)
at SimplePolicyTest.main(SimplePolicyTest.java:24)

Advertisements

Author: ridhobustami

orang ngak jelas

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s