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
- 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'};
- 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
wahhh programnya bagus bang.. tapi koq gak bisa di tes pake wtk(wireless tool kit) yaa??
BalasHapusmohon bantuanya master suhu,, :D
kirim ke email aku ya
alexist_thyoe@yahoo.com
soalnya jarang OL.. terimakasih sebelumnya.. ^_^
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...
BalasHapusnaaahhh 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)
link nya udah ga berlaku lagi yaa gan
HapusMaaf... karna saya pemula.
BalasHapusBisa minta ajarin ngak buat tampilan seperti diatas (point 1)?
Trimakasih.......
@dani, jika kita menggunakan Netbeans Mobility tinggal drag and drop saja mas di flownya, lalu tambahkan object nya di screen nya
BalasHapusmas, file fullnya bisa di download ga?
BalasHapussaya kirim lewat email saja ya. Jika mas mau, saya minta emailnya, boleh tidak ?
Hapusmau dong aprjer13@gmail.com ya urgent mas aq butuh banget share ya...
HapusBisa bikinin dengan metode lain mas..?? metode ADFGVX Product Cipher.., source code Enkripsi dan Dekripsinya aja... hehehehe makasih...
BalasHapuscoba 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
Hapussemoga membantu... terima kasih :D
Mas boleh minta file fullnya nda?
BalasHapusemail aku : ferdy.arista@gmail.com
makasih mas ilmunya.. :)
saya sudah kirim, terima kasih :D
Hapusmas, saya juga mau untuk file fullnya.
Hapuskalu boleh kirim di edwin.heriyansyah@gmail.com
terima kasih..
kalau yang menggunakan ADFGVX Product Chiper ada gk..??
BalasHapussaya sedang membutuhkan itu..
minta file full nya juga dong...
BalasHapusemail : laptop.axioo58@yahoo.co.id
minta file fullnya dunk
BalasHapuskl blh, krim ke email
reevinks@yahoo.com
minta file fullnya jg hhe :)
BalasHapuskirim ke jevfen@yahoo.co.id
Plaese thk's
Boleh minta file full nya juga ^^, hehee.
BalasHapusingin lebih tahu enkripsi di J2me.
devielvira300@gmail.com
Saya juga mau dong bang file lengkapnya?kebetulan saya juga ada tugas kuliah kripto ni..mohon bantuannya. Email saya baskorodanu@gmail.com thanks..
BalasHapusgan saya mw tanya ,agan punya kah sorce code sederhana eclipse android tentang enkripsi caesar cipher
BalasHapussaya jg mau gan fle fullnya .. k indiastradi@gmail.com makasi gan :D
BalasHapussaya jga mau dunk file utuh nya mas
BalasHapusrizkynatural@gmail.com
bang saya minta file fullnya ya.. sama file yang ada di neatbeans nya saya mau belajar bang.. terimakasih rahman.rahman45@gmail.com
BalasHapusboleh juga minta bang?? bahannya bagus untuk pembelajaran bang,,
BalasHapusb_uya@yahoo.co.id
bang mau donk adifuad90@gmail.com makasih
BalasHapusbang mau donk buat belajar dodibeck7@gmail.com...olis iya bang
BalasHapusfilenya gak bisa didownload mas...pleas mau dong contoh programnya.
BalasHapusmas kok file ya ngga bsa di download bsa minta file ya full ngga ? please
BalasHapusrizkachika94@gmail.com
ane jg minta donk gan :D
BalasHapuskirim ke sob666@live.com
mas aku juga dong maher.iluminasi@gmail.com
BalasHapusbg minta file ne nya lh ke email ne
BalasHapuspenting soalnya
mahfudalaminamin@gmail.com
cpt ya bg
boleh minta file full nya kak? kalo bisa sama contoh program yang lainnya ya :)
BalasHapusini email saya irnarestiani96@gmail.com
makasih sebelumnya :)
Bang, boleh bagi source code fullnya? Terimakasih sudah membantu. Ini email saya bang starkindustries67@gmail.com
BalasHapusgan bisa minta tlng minta file fullnya ? ridhofaldiansyahwildan@gmail.com
BalasHapusbang boleh minta fullnya? mjnovrando@gmail.com
BalasHapus