15 Nisan 2010 Perşembe

BouncyCastle Yükleme

Eminim ki birçoğunuz projelerinizde gönderilen ya da saklanan veriyi şifreleme ihtiyacı duymuşsunuzdur. Bu yazıda da bu ihtiyacın Java ortamındaki en meşhur çözümlerinden biri olan BouncyCastle kripto paketini tanıtacağım.

BouncyCastle kripto paketi C# ve Java ortamlarında çalışan ve hemen hemen bütün standart algoritmaları destekleyen oldukça başarılı bir çalışma. http://www.bouncycastle.org/ adresinden inceleyebileceğiniz çalışma tamamen Open Source ve indirmek için herhangi bir ücret talep edilmiyor. Java ortamında kurulum içinse öncelikle http://www.bouncycastle.org/latest_releases.html adresinden en son versiyon paketi indirmeniz gerekiyor. (bu yazı yazıldığı sırada 1.45)

Zip dosyasını yükledikten sonra /jars klasörüne girerek bcprov-jdk16-145.jar dosyasını bulun. Buradaki isimlendirme yöntemi bcprov-jdk(jdk versiyonu)-(paket versiyonu).jar şeklindedir. bcprov-jdk16-145.jar dosyası Java 1.6 için 1.45 versiyonlu BouncyCastle paketini belirtmektedir. Şimdi yapmamız gereken bu dosyayı C:\Program Files\Java dizini içinde jre kurulumunun olduğu klasörde \lib\ext alt klasörüne kopyalamak. Burada amacımız Java programlarında Şifreleme Servisi (Crypto Provider) olarak BouncyCastle paketini kullanabilmek.

Dosyanın kopyalanması bittikten sonra bir üst klasöre dönerek \lib\security alt klasörüne geçiyoruz. Burada java.security dosyasında Şifreleme Servislerine BouncyCastle paketini eklememiz gerekiyor. Dosyada aşağıdaki bölüme son satırı ekliyoruz;

security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=sun.security.mscapi.SunMSCAPI
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

Burada dikkat edilmesi gereken BouncyCastle'a vereceğimiz numara. Sizin dosyanızda 5 servis adı varsa security.provider.6 şeklinde tanımlanması gerekiyor. Ayrıca BouncyCastle tanımlaması mutlaka en alt satırda yer almalı. Aksi takdirde JVM çalışma hatası verebiliyor.

Bu şekilde kripto servisimiz hazır. Windows kullanıcıları yukarıdaki işlemleri JDK klasörü için tekrarlamak durumunda. Klasör yapısı aynı olduğu için yukarıdaki adımları aynen uygulayabilirsiniz.

Kurulum bittikten sonra bir Java projesi açarak BouncyCastle servisinin varlığını aşağıdaki gibi kontrol edebilirsiniz.

Key key;
KeyGenerator keyGen;
Cipher encrypt;

Security.addProvider(new BouncyCastleProvider());

try
{
// "BC" is the name of the BouncyCastle provider
keyGen = KeyGenerator.getInstance("DES", "BC");
keyGen.init(new SecureRandom());

key = keyGen.generateKey();

encrypt = Cipher.getInstance("DES/CBC/PKCS5Padding", "BC");
}
catch (Exception e)
{
System.err.println(e);
System.exit(1);
}

encrypt.init(Cipher.ENCRYPT_MODE, key);

bOut = new ByteArrayOutputStream();
cOut = new CipherOutputStream(bOut, encrypt);

cOut.write("plaintext".getBytes());
cOut.close();

Yukarıdaki kod hata verirse BouncyCastle paketi doğru kurulmamış demektir.
(Not: Deneme kodu http://www.bouncycastle.org/specifications.html#install adresinden alınmıştır)

BouncyCastle paketinde desteklenen şifreleme algoritmalarına ve anahtar uzunluklarına http://www.bouncycastle.org/specifications.html#install adresinden ulaşabilirsiniz.

Hiç yorum yok:

Yorum Gönder