Berikut ini saya coba sajikan satu rutin aplikasi ciphering dalam
bahasa / program Java untuk melakukan enkripsi dan dekripsi Vigenere cipher.
Vigenère cipher adalah metode enkripsi teks abjad dengan
menggunakan serangkaian cipher Caesar berbeda berdasarkan suatu kata kunci. Boleh
dikatakan bahwa Vigenère merupakan bentuk sederhana substitusi
polyalphabetic.
The Vigenère cipher, ditemukan oleh seorang Prancis, Blaise
de Vigenère di abad ke-16. Ini adalah cipher polyalphabetic karena menggunakan
dua atau lebih huruf cipher untuk mengenkripsi data. Dengan kata lain, huruf-
huruf dalam cipher Vigenère diubah berdasarkan lompatan yang berbeda, biasanya dilakukan dengan
menggunakan kata atau frase sebagai kunci enkripsi.
Berbeda dengan cipher monoalphabetic, cipher polyalphabetic
tidak rentan terhadap analisis frekuensi, karena lebih dari satu huruf dalam
plaintext dapat diwakili oleh satu huruf di enkripsi.
package
com.darto.vigenecipher;
public class
VigenereCipher
{
public static String encrypt(String text,
final String key)
{
String res = "";
text = text.toUpperCase();
for (int i = 0, j = 0; i <
text.length(); i++)
{
char c = text.charAt(i);
if (c < 'A' || c > 'Z')
continue;
res += (char) ((c + key.charAt(j) -
2 * 'A') % 26 + 'A');
j = ++j % key.length();
}
return res;
}
public static String decrypt(String text,
final String key)
{
String res = "";
text = text.toUpperCase();
for (int i = 0, j = 0; i <
text.length(); i++)
{
char c = text.charAt(i);
if (c < 'A' || c > 'Z')
continue;
res += (char) ((c - key.charAt(j) + 26) % 26 +
'A');
j = ++j % key.length();
}
return res;
}
public static void main(String[] args)
{
String key =
"MYJAVALAMP";
String message = "Blog saya ada di blogspot !";
String encryptedMsg = encrypt(message,
key);
System.out.println("String: "
+ message);
System.out.println("Encrypted
message: " + encryptedMsg);
System.out.println("Decrypted
message: " + decrypt(encryptedMsg, key));
}
}
No comments:
Post a Comment
Silakan berkomentar ....