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
- buat tampilan layar :
Tambahkan source code dibawah ini :
source code:
======================================
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;
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;
if (!(password.charAt(x)==' ')) {
pass[indexPass]=password.charAt(x);
indexPass=indexPass+1;
}
}
int panjang = plainTeks.length();
pass2 = new char[panjang];
int indexCharPass;
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;
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;
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));
}