J2ME Encryption with Bouncy Castle


<strong>import org.bouncycastle.crypto.*;</strong>
<strong>import org.bouncycastle.crypto.engines.*;</strong>
<strong>import org.bouncycastle.crypto.modes.*;</strong>
<strong>import org.bouncycastle.crypto.params.*;</strong>

<strong>public class Encryptor {</strong>

<strong>private BufferedBlockCipher cipher;</strong>
<strong>private KeyParameter key;</strong>

<strong>// inisialisasi engine kriptografi.</strong>
<strong>// array key paling sedikit 8 bytes.</strong>
<strong>public Encryptor( byte[] key ){</strong>
<strong>cipher = new PaddedBlockCipher(new CBCBlockCipher(new DESEngine() ) );</strong>
<strong>this.key = new KeyParameter( key );</strong>
<strong>}</strong>

<strong>// inisialisasi engine kriptografi.</strong>
<strong>// string paling sedikit 8 chars.</strong>
<strong>public Encryptor( String key ){</strong>
<strong>this( key.getBytes() );</strong>
<strong>}</strong>

<strong>private byte[] callCipher( byte[] data ) throws CryptoException {</strong>
<strong>int size = cipher.getOutputSize( data.length );</strong>
<strong>byte[] result = new byte[ size ];</strong>
<strong>int olen = cipher.processBytes( data, 0, data.length, result, 0 );</strong>
<strong>olen += cipher.doFinal( result, olen );</strong>
<strong>if( olen &lt;&gt;</strong>
<strong>byte[] tmp = new byte[ olen ];</strong>
<strong>System.arraycopy( result, 0, tmp, 0, olen );</strong>
<strong>result = tmp;</strong>
<strong>}</strong>
<strong>return result;</strong>
<strong>}</strong>

<strong>// enkripsi arbitrary byte array</strong>
<strong>// mengembalikan data terenkripsi dalam bentuk yang berbeda</strong>
<strong>public synchronized byte[] encrypt( byte[] data ) throws CryptoException {</strong>
<strong>if( data == null || data.length == 0 ){</strong>
<strong>return new byte[0];</strong>
<strong>}</strong>

<strong>cipher.init( true, key );</strong>
<strong>return callCipher( data );</strong>
<strong>}</strong>

<strong>// enkripsi string.</strong>
<strong>public byte[] encryptString( String data ) throws CryptoException {</strong>

<strong>if( data == null || data.length() == 0 ){</strong>
<strong>return new byte[0];</strong>
<strong>}</strong>
<strong>return encrypt( data.getBytes() );</strong>
<strong>}</strong>

<strong>// Dekrip arbitrary data.</strong>
<strong>public synchronized byte[] decrypt( byte[] data )</strong>
<strong>throws CryptoException {</strong>
<strong>if( data == null || data.length == 0 ){</strong>
<strong>return new byte[0];</strong>
<strong>}</strong>

<strong>cipher.init( false, key );</strong>
<strong>return callCipher( data );</strong>
<strong>}</strong>

<strong>// Dekrip string</strong>
<strong>public String decryptString( byte[] data )</strong>
<strong>throws CryptoException {</strong>

<strong>if( data == null || data.length == 0 ){</strong>

<strong>return “”;</strong>

<strong>}</strong>
<strong>return new String( decrypt( data ) );</strong>
<strong>}</strong>
<strong>}</strong>

Ditulis dalam Ngedidik. 2 Comments »

2 Tanggapan to “J2ME Encryption with Bouncy Castle”

  1. andri Says:

    mas, tolong dunk bantuin kasih penjelasan dengan source code di atas…
    saya ad tgas akhir mengenai enkripsi…
    mohon bimbingannya yaa..
    terima kasih…

    Suka

  2. herahadi Says:

    aduh gan tag strongnya gak bisa di ilangin ya..

    Suka


Tinggalkan komentar

Mari kita bersama meningkatkan kesadaran kita - Mulailah berpikir cerdas, Kita semua beragama !!! Agama bukan identitas...jadikanlah agama untuk keluar dari kebodohan

Tulisan di blog ini mungkin sangat ngawur tapi mungkin juga benar. Merdekakan pikiran anda, sentuh hati nurani anda. Yang ada tinggal KASUNYATAN SEJATI

Zoemalang's community at www. zoemalang.wordpress.com

ujung malang adalah Sebuah desa yang hilang terganti dengan ujung harapan

YoYo Games Blog Feed

Tulisan di blog ini mungkin sangat ngawur tapi mungkin juga benar. Merdekakan pikiran anda, sentuh hati nurani anda. Yang ada tinggal KASUNYATAN SEJATI