Friday, 24 December 2010

Cryptography Sederhana (2)


"aBCD eFGHi = Saya Programmer!"


Tulisan ini merupakan lanjutan dari:
Cryptography Sederhana (1)

Melanjutkan bahasan sebelumnya, mari kita coba dengan kode sederhana berikut ini:


/*
Source Code ini adalah bahan/materi
yang berasal dari blog:

http://membuatgamedengancpp.blogspot.com/

*/
#include <stdio.h>
#include <conio.h>
#include <string>
#include <cstdlib>

int main(){
    std::string kalimat, ciphertext;

    printf("Masukkan 10 karakter = ");
    for(int c=0;c < 10;c++){
        kalimat+=getche();
        ciphertext+= (kalimat[c]+1);
    }
 
    printf("\n\nKalimat Asli = %s\n",kalimat.c_str());
    printf("Kalimat disamarkan = %s\n\n",ciphertext.c_str());

    system("pause");
    return 0;
}

//- krofz

Program diatas akan meminta user memasukkan 10 karakter baik huruf (a-z / A-Z), angka (0-9), spasi, atau karakter spesial (!,?,#,dst). Disini kita menggunakan fungsi 'getche()' sebagai fungsi inputnya. Kenapa tidak menggunakan cin, scanf(), gets(), atau semacamnya? Karena hanya untuk berkreasi hehehe . Tidak, tidak.. bukan itu alasannya. Pertama, fungsi cin tidak dapat begitu saja memperoleh karakter spasi alias akan error jika ada spasi. Kedua, begitu pula dengan scanf() yang hampir sama dengan cin. Ketiga, gets() memang dapat memperoleh karakter spasi tetapi selama aku berekperimen selalu error jika karakter yang dimasukkan lebih dari 18 karakter (nggak tau angka pastinya). Dan sampai saat ini ketiga masalah tersebut belum aku selesaikan jika user memasukkan karakter spasi. Kalau memang masalahnya adalah spasi maka kasih peringatan saja kalau program bakal error jika diinput spasi <- Kurang bijak . Atau batasi saja tombol yang akan dimasukkan dengan melakukan pengecualian pada karakter spasi <- Kagak tau caranya .

Bagaimana dengan getche()? Coba jalankan dan ketik apa saja (termasuk juga karakter spasi) selama tak lebih dari 10. Dan semua terlihat seperti tidak ada masalah (bukan?). Tapi walau bagaimanapun segala sesuatunya tidak ada yang sempurna, coba saja tekan Esc, Backspace, atau Enter, dan wussh.... programnya jadi error (~_~). Tapi sebelum masalah menjadi panjang, kita kembali lagi ke masalah utama terlebih dahulu yaitu bagaimana kita menyamarkan informasi. Jalankan program dan coba ketikan kalimat atau seperti gambar berikut:

Gambar 1. Kamu pasti bisa!

Dapat dilihat bahwa setelah huruf S (s besar) iyalah huruf T (t besar), sesuai dengan cipher atau metode penyamaran yang digunakan. Lalu bagaimana dengan karakter spasi? Menjadi apakah dia? Ia menjadi karakter selanjutnya sesuai dengan urutan karakter ASCII:

Gambar 2. ASCII chart (sumber: Search Engine yang mencari dari Internet yang amat sangat luas dan sedikit modifikasi).

Urutan spasi pada gambar adalah pada nomor 32, yang dilanjutkan dengan karakter tanda seru ('!') nomor 33. Begitu pula dengan angka 9 bukan menjadi 0, z menjadi a atau Z menjadi A, karena cipher yang digunakan menambahkan 1 poin/tingkat sesuai standar karakter ASCII tersebut. Disini kita baru meminta user memasukkan kalimat lalu menampilkan ciphertext-nya. Lalu dimana proteksi untuk sih 'nilai.hs'-nya!!! Harusnya anda sudah dapat membuatnya ;). Tapi jangan khawatir selanjutnya kita akan proteksi dia.

- krofz

No comments:

Post a Comment

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top