Kamis, 06 Januari 2011

PROGRAM J2ME SEDERHANA KRIPTOGRAFI CAESAR CHIPER DAN VIGENERE CHIPER

Di tengah kesibukan UAS lebih baik menyegarkan pikiran dengan ngeblog, hahahaha… sesuai dengan janji saya pada postingan sebelumnya. Ini merupakan pemenuhan janji saya kepada anda, hahahaha *lebaaay*
Oke langsung aja deh mari kita coba mengimplementasikan metode Caesar chipper dan vigenere dalam aplikasi J2ME.
Tapi sebelumnya kita harus memahami bagaimana proses enkripsi maupun deksripsi pada kedua metode ini. Karena metode caesar chiper telah ane jelasin pada postingan sebelumnya jadi disini ane bahas cara vigenere aje ok!!.. hahaha
Satu jam selanjutnya........ begini ceritanya...



Metode ini disebut juga Running Key Chiper tapi lebih di kenal dengan Vigenere Chiper. Karakter ciphertext ditentukan pada pertemuan antara baris dan kolom
Baris. untuk karakter yang akan dienkrip, kolom untuk karakter dari keyword.

Coba lihat contohnya di bawah ini :

Plaintext nya adalah SOUND THE RETREAT dan key(password) adalah DEADFED, dan setelah melakukan enkripsi akan menghasilkan VSUQI XKH VEWWIDW. Coba anda perhatikan kolom untuk plaintext dan baris untuk key. Huruf S pada plaintext bertemu dengan huruf D pada key, maka hasilnya V yang ada pada ciphertext.

Naaaahhh... udah mudengkan, kalo belum, mudeng-mudengin aja deh, hehehehehe

Oke sekarang kita buat programnya.. buka alat perangnya (Netbeans – ane pake Netbean 6.9.1).. hehe

  1. buat tampilan layar :

  1. Tambahkan source code dibawah ini :

String hasil="";

private char [] pass;

private char [] pass2;

private char [] huruf = {'A','B','C','D','E','F','G','H','I','J','K','L','M',

'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',

'a','b','c','d','e','f','g','h','i','j','k','l','m',

'n','o','p','q','r','s','t','u','v','w','x','y','z'};

private char [] rotasi_13={'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',

'A','B','C','D','E','F','G','H','I','J','K','L','M',

'n','o','p','q','r','s','t','u','v','w','x','y','z',

'a','b','c','d','e','f','g','h','i','j','k','l','m'};

  1. Buat method yang digunakan untuk mengenkrip dan mendekrip.


private String kriptografiCaesarChipper(String plainTeks,int panjang,int ambil){

char charEnkrip;

if(ambil

charEnkrip=plainTeks.charAt(ambil);

if (charEnkrip==' '){

hasil=hasil+" ";

}

else{

for(int i=0;i<52;i++){

if(charEnkrip == huruf[i]) {

hasil = hasil + rotasi_13[i];

break;

}

}

}

kriptografiCaesarChipper(plainTeks,panjang,ambil+1);

}

return hasil;

}

private void ConcatPass(String plainTeks,String password){

int jmlSpasi=0;

int indexCurPass2;

pass = new char[password.length()];

int indexPass=0;

for (int x=0;x

if (!(password.charAt(x)==' ')) {

pass[indexPass]=password.charAt(x);

indexPass=indexPass+1;

}

}

int panjang = plainTeks.length();

pass2 = new char[panjang];

int indexCharPass;

for (int i=0;i

if(i

if (plainTeks.charAt(i)==' '){

pass2[i]=' ';

jmlSpasi++;

}

else{

indexCurPass2=i-jmlSpasi;

pass2[i]=pass[indexCurPass2];

}

}

else{

if (plainTeks.charAt(i)==' '){

pass2[i]=' ';

jmlSpasi++;

}

else{

indexCurPass2 = i - jmlSpasi;

indexCharPass = indexCurPass2%password.length();

pass2[i]=pass[indexCharPass];

}

}

}

}

// mengenkrip, jika ada spasi di password maka dianggap A atau index huruf=0;

private String kriptografiEnkripVegenere(String plainTeks,int panjang,int ambil, int jenis){

int indexBaris=0;

int indexKolom=0;

int indexCharHasil=0;

char charEnkrip,passEnkrip;

if(ambil

charEnkrip=plainTeks.charAt(ambil);

passEnkrip = pass2[ambil];

if (charEnkrip==' '){

hasil=hasil+" ";

}

else{

if (jenis == 1 ) {

for(int i=0;i<26;i++){

if(charEnkrip == huruf[i]) {

indexKolom=i;

break;

}

}

for(int i=0;i<26;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

indexCharHasil = indexBaris + indexKolom;

indexCharHasil = indexCharHasil%26;

hasil = hasil + huruf[indexCharHasil];

}

else if(jenis == 2) {

for(int i=26;i<52;i++){

if(charEnkrip == huruf[i]) {

indexKolom=i;

break;

}

}

for(int i=26;i<52;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

indexCharHasil = indexBaris + indexKolom;

indexCharHasil = (indexCharHasil%52);

if (indexCharHasil<26){

indexCharHasil = indexCharHasil+26;

}

hasil = hasil + huruf[indexCharHasil];

}

else if(jenis == 3) {

for(int i=0;i<52;i++){

if(charEnkrip == huruf[i]) {

indexKolom=i;

break;

}

}

for(int i=0;i<52;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

indexCharHasil = indexBaris + indexKolom;

indexCharHasil = indexCharHasil%52;

hasil = hasil + huruf[indexCharHasil];

}

}

kriptografiEnkripVegenere(plainTeks,panjang,ambil+1,jenis);

}

return hasil;

}

// mendekrip, jika ada spasi di password maka di angggap A atau index huruf nya 0

private String kriptografiDekripVegenere(String chiperText,int panjang,int ambil, int jenis){

int indexBaris=0;

int indexChiper=0;

int indexCharHasil=0;

char charDekrip,passEnkrip;

if(ambil

charDekrip=chiperText.charAt(ambil);

passEnkrip = pass2[ambil];

if (charDekrip==' '){

hasil=hasil+" ";

}

else{

if (jenis == 1 ) {

for(int i=0;i<26;i++){

if(charDekrip == huruf[i]) {

indexChiper=i;

break;

}

}

for(int i=0;i<26;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

if (indexChiper

indexCharHasil = 26 + (indexChiper - indexBaris);

}

else {

indexCharHasil = indexChiper - indexBaris;

}

hasil = hasil + huruf[indexCharHasil];

}

else if(jenis == 2) {

for(int i=26;i<52;i++){

if(charDekrip == huruf[i]) {

indexChiper=i;

break;

}

}

for(int i=26;i<52;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

if (indexChiper

indexCharHasil = 52-indexBaris;

indexCharHasil += indexChiper-26;

indexCharHasil +=26;

}

else {

indexCharHasil = (indexChiper - indexBaris);

indexCharHasil %=26;

indexCharHasil +=26;

}

hasil = hasil + huruf[indexCharHasil];

}

else if(jenis == 3) {

for(int i=0;i<52;i++){

if(charDekrip == huruf[i]) {

indexChiper=i;

break;

}

}

for(int i=0;i<52;i++){

if(passEnkrip == huruf[i]) {

indexBaris = i;

break;

}

}

if (indexChiper

indexCharHasil = 26 + (indexChiper - indexBaris);

}

else {

indexCharHasil = indexChiper - indexBaris;

}

hasil = hasil + huruf[indexCharHasil];

}

}

kriptografiDekripVegenere(chiperText,panjang,ambil+1,jenis);

}

return hasil;

}

private void enkrip(int jenis){

if (jenis == 1 ){

hasil="";

txtHasil.setString("");

txtKata.setString(txtKata.getString().toUpperCase());

txtPass.setString(txtPass.getString().toUpperCase());

ConcatPass(txtKata.getString(),txtPass.getString());

}

if (jenis == 2 ){

hasil="";

txtHasil.setString("");

txtKata.setString(txtKata.getString().toLowerCase());

txtPass.setString(txtPass.getString().toLowerCase());

ConcatPass(txtKata.getString(),txtPass.getString());

}

if (jenis == 3 ){

hasil="";

txtHasil.setString("");

ConcatPass(txtKata.getString(),txtPass.getString());

}

txtHasil.setString(kriptografiEnkripVegenere(txtKata.getString(), txtKata.getString().length(), 0,jenis));


}

private void dekrip(int jenis){

if (jenis == 1 ){

hasil="";

txtHasil.setString("");

txtKata.setString(txtKata.getString().toUpperCase());

txtPass.setString(txtPass.getString().toUpperCase());

ConcatPass(txtKata.getString(),txtPass.getString());

}

if (jenis == 2 ){

hasil="";

txtHasil.setString("");

txtKata.setString(txtKata.getString().toLowerCase());

txtPass.setString(txtPass.getString().toLowerCase());

ConcatPass(txtKata.getString(),txtPass.getString());

}

if (jenis == 3 ){

hasil="";

txtHasil.setString("");

ConcatPass(txtKata.getString(),txtPass.getString());

}

txtHasil.setString(kriptografiDekripVegenere(txtKata.getString(), txtKata.getString().length(), 0,jenis));

}


Selanjutnya anda panggil method-method diatas dari command item yang ada pada editor Chaesar Chiper atau Vigenere Chiper yang sesuai. Silahkan download hasil programnya disini






35 komentar:

  1. wahhh programnya bagus bang.. tapi koq gak bisa di tes pake wtk(wireless tool kit) yaa??
    mohon bantuanya master suhu,, :D
    kirim ke email aku ya
    alexist_thyoe@yahoo.com
    soalnya jarang OL.. terimakasih sebelumnya.. ^_^

    BalasHapus
  2. sebenernya sih seharusnya make WTK juga bisa, namun kalo mau pke WTK agan harus buat desain tampilannya dulu, bisa jadi nama objectnya berbeda sama yang ane buat...
    naaahhh di sini ane ngga posting blok code untuk tampilan tersebut ane posting yang pentingnya aja.. naaahhh contoh programnya ada di coba donlot disini http://www.4shared.com/file/rqZfRf-t/kriptografi__j2ME_.html (Ane make Netbeans 6.9.1)

    BalasHapus
  3. Maaf... karna saya pemula.
    Bisa minta ajarin ngak buat tampilan seperti diatas (point 1)?

    Trimakasih.......

    BalasHapus
  4. @dani, jika kita menggunakan Netbeans Mobility tinggal drag and drop saja mas di flownya, lalu tambahkan object nya di screen nya

    BalasHapus
  5. mas, file fullnya bisa di download ga?

    BalasHapus
    Balasan
    1. saya kirim lewat email saja ya. Jika mas mau, saya minta emailnya, boleh tidak ?

      Hapus
    2. mau dong aprjer13@gmail.com ya urgent mas aq butuh banget share ya...

      Hapus
  6. Bisa bikinin dengan metode lain mas..?? metode ADFGVX Product Cipher.., source code Enkripsi dan Dekripsinya aja... hehehehe makasih...

    BalasHapus
    Balasan
    1. coba baca disini mas https://docs.google.com/viewer?a=v&q=cache:8hX84ZmPEvsJ:webmail.informatika.org/~rinaldi/Kriptografi/2008-2009/Makalah1/MakalahIF30581-2009-a066.pdf+algoritma+ADFGVX+Product+Cipher&hl=id&gl=id&pid=bl&srcid=ADGEEShGXQfj37R-8SxISH7HNEr4bYSP9hAm1RBPvtdfMVRy99BWAR8vhL1aaGJfrZLHxkZNMw8UlkHB-mG_Qyjxtg05pB14eUxSYs09fduiw7SMq2D3tzccyodeHKdqC4xg-dvclkwx&sig=AHIEtbSTeeJwP5vSi_wcfFLv-yhRGd11jA&pli=1
      semoga membantu... terima kasih :D

      Hapus
  7. Mas boleh minta file fullnya nda?
    email aku : ferdy.arista@gmail.com
    makasih mas ilmunya.. :)

    BalasHapus
    Balasan
    1. saya sudah kirim, terima kasih :D

      Hapus
    2. mas, saya juga mau untuk file fullnya.
      kalu boleh kirim di edwin.heriyansyah@gmail.com
      terima kasih..

      Hapus
  8. kalau yang menggunakan ADFGVX Product Chiper ada gk..??
    saya sedang membutuhkan itu..

    BalasHapus
  9. minta file full nya juga dong...
    email : laptop.axioo58@yahoo.co.id

    BalasHapus
  10. minta file fullnya dunk
    kl blh, krim ke email
    reevinks@yahoo.com

    BalasHapus
  11. minta file fullnya jg hhe :)
    kirim ke jevfen@yahoo.co.id
    Plaese thk's

    BalasHapus
  12. Boleh minta file full nya juga ^^, hehee.
    ingin lebih tahu enkripsi di J2me.
    devielvira300@gmail.com

    BalasHapus
  13. Saya juga mau dong bang file lengkapnya?kebetulan saya juga ada tugas kuliah kripto ni..mohon bantuannya. Email saya baskorodanu@gmail.com thanks..

    BalasHapus
  14. gan saya mw tanya ,agan punya kah sorce code sederhana eclipse android tentang enkripsi caesar cipher

    BalasHapus
  15. saya jg mau gan fle fullnya .. k indiastradi@gmail.com makasi gan :D

    BalasHapus
  16. saya jga mau dunk file utuh nya mas
    rizkynatural@gmail.com

    BalasHapus
  17. bang saya minta file fullnya ya.. sama file yang ada di neatbeans nya saya mau belajar bang.. terimakasih rahman.rahman45@gmail.com

    BalasHapus
  18. boleh juga minta bang?? bahannya bagus untuk pembelajaran bang,,
    b_uya@yahoo.co.id

    BalasHapus
  19. bang mau donk adifuad90@gmail.com makasih

    BalasHapus
  20. bang mau donk buat belajar dodibeck7@gmail.com...olis iya bang

    BalasHapus
  21. filenya gak bisa didownload mas...pleas mau dong contoh programnya.

    BalasHapus
  22. mas kok file ya ngga bsa di download bsa minta file ya full ngga ? please
    rizkachika94@gmail.com

    BalasHapus
  23. ane jg minta donk gan :D
    kirim ke sob666@live.com

    BalasHapus
  24. mas aku juga dong maher.iluminasi@gmail.com

    BalasHapus
  25. bg minta file ne nya lh ke email ne
    penting soalnya
    mahfudalaminamin@gmail.com
    cpt ya bg

    BalasHapus
  26. boleh minta file full nya kak? kalo bisa sama contoh program yang lainnya ya :)
    ini email saya irnarestiani96@gmail.com

    makasih sebelumnya :)

    BalasHapus
  27. Bang, boleh bagi source code fullnya? Terimakasih sudah membantu. Ini email saya bang starkindustries67@gmail.com

    BalasHapus
  28. gan bisa minta tlng minta file fullnya ? ridhofaldiansyahwildan@gmail.com

    BalasHapus
  29. bang boleh minta fullnya? mjnovrando@gmail.com

    BalasHapus