Teknik Enkripsi Blocking


Ada beberapa teknik dasar kriptografi, antara lain: Substitusi, Blocking, Permutasi, Ekspansi, dan Pemampatan (Compaction). Nah…. dalam tulisan ini saya mau membahas sedikit tentang teknik dasar kriptografi menggunakan teknik Blocking.

Sistem enkripsi terkadang membagi plaintext menjadi blok-blok yang terdiri dari beberapa karakter yang kemudian dienkripsikan secara independen. Plaintext dimasukkan kedalam matriks yang mempunyai jumlah kolom yang sudah didefinisikan, sedangkan jumlah barisnya bergantung pada panjang plaintext. Misal:
Plaintext: Math 310 Proves!
Setelah dimasukkan kedalam matriks:

Dengan menggunakan enkripsi blocking dipilih jumlah lajur dan kolom untuk penulisan pesan. Jumlah lajur atau kolom menjadi kunci bagi kriptografi dengan teknik ini. Plaintext dituliskan secara vertikal ke bawah berurutan pada lajur, dan dilanjutkan pada kolom berikutnya sampai seluruhnya tertulis. Ciphertext-nya adalah hasil pembacaan plaintext secara horizontal berurutan sesuai dengan blok-nya. Jadi ciphertext yang dihasilkan dengan teknik ini adalah:
M3r!a1ot0vh e Ps

Plaintext dapat pula ditulis secara horizontal dan ciphertextnya adalah hasil pembacaan secara vertikal.
Untuk potongan source codenya dalam bahasa pemrograman Java adalah sebagai berikut:

//Blocking
int [][] plainBlock = null; //membuat array dinamis dengan jumlah kolom = panjang kunci
int kolom = key.length;
int baris = 0;

//Input Plaintext
System.out.println("\nPLAINTEXT: ");
String plaintext = input.readLine();
//int indeks = plaintext.indexOf(plaintext);

if (plaintext.length() % kunci.length() == 0) {
baris = plaintext.length() / kunci.length();
}
else if (plaintext.length() % kunci.length() != 0) {
baris = plaintext.length() / kunci.length() + 1;
}

plainBlock = new int [baris][kolom];

//Memasukkan plaintext ke dalam array 2 dimensi
int indeks = 0;
for (int m = 0; m < plainBlock.length; m++){ //baris
for (int n = 0; n < plainBlock[m].length; n++) { //kolom
if (indeks < plaintext.length()) {
plainBlock [m][n] = plaintext.charAt(indeks);
indeks = indeks + 1;
}
else {
plainBlock[m][n] = 0; //untuk mengisi penuh matrik plainteks
//The ASCII abbreviation for the Null character, a byte containing all zero bits, used mainly as a filler or as a marker for the end of a string
}
}
}

//cetak Matriks Plainteks
System.out.println("\nPLAINTEXT MATRIX");
for (int m = 0; m < plainBlock.length; m++) {
for (int n = 0; n < plainBlock[m].length; n++) {
System.out.print(plainBlock [m][n] + "\t");
}
System.out.print("\n");
}

//Enkripsi Blocking
int [] chiperBlock = new int [baris*kolom];
int tempIndeks = 0;
System.out.println("\nCHIPERBLOCK MATRIX: ");
for (int n = 0; n < key.length; n++) {
for (int m = 0; m < baris; m++) {
chiperBlock [tempIndeks] = plainBlock [m][n];
System.out.print(chiperBlock[tempIndeks] + " ");
tempIndeks++;
}
}

//menghapus nilai 0 pada matrik
String tempChiper = "";
for (int x = 0; x < chiperBlock.length; x++) {
if (chiperBlock[x] != 0) {
tempChiper += (char) chiperBlock[x];
}
}
System.out.println("\nCHIPERTEXT BLOCKING: " + tempChiper);

Untuk dekripsi, tinggal membalik langkah pembacaan matriksnya. Silahkan kembangkan sendiri dan selamat mencoba!!.

8 thoughts on “Teknik Enkripsi Blocking

    1. Bagian mananya gan? kalau setau ane akspansi cuma menambahkan karakter tambahan pada karakter asal. untuk lebih detailnya coba nt googling dulu gan.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s