Kamis, 22 Maret 2012

PROGRAM J2ME SEDERHANA KRIPTOGRAFI CAESAR CHIPER DAN VIGENERE CHIPER

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

0 komentar:

Posting Komentar

AHMAD TAUFIK SIREGAR
 
;