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));
}
}
Tidak ada komentar:
Posting Komentar