Kode Rail Fence Chiper Bahasa C


Secara sederhana konsep ini untuk menyandikan teks sehingga tidak dapat dibaca. Untuk apa ? Ya tau sendiri lah kalau manusia dulu itu melakukan peperangan, pengiriman informasi itu akan lebih baik disandikan agar musuh tidak tahu. Kemudian, munculah teknik-teknik penyandian yang sangat banyak, karena jumlah manusia yang banyak. Salah satu tekniknya adalah RailFence Chiper. Kayak gambar diatas, ada yang namanya plain text atau teks yang belum disandikan, trus disandikan dengan railfence, hasilnya bernama chiper text atau teks yang sudah disandikan. Tebak yang mana ? well, yang Hello World itu plain dan Horel ollWd itu chiper. Trus masih berguna kah sekarang belajar gini ? Ya masih, dimana ada pengiriman informasi, disitulah lebih baik digunakan penyandian. Contohnya internet. 
Talk is cheap, show me the code !

Dalam railfence, terdapat konsep zigzag. Jadi teks diatur sedemikian rupa dengan jalur zigzag dengan tinggi key. Nanti teks akan dibaca dengan posisi horizontal kekanan, kebawah, horizontal ke kanan lagi dan seterusnya. Langsung aja ke program bahasa C yaa :

1. Enkripsi (Penyandian)
#include <stdio.h>
#include <string.h>

int main()
{
    //char txt[20]="Alloffthefuckinglie"; //teks yang akan di enkripsi
    //char hopeless[20]=""; //teks hasil enskripsi
    char txt[100];
    char hopeless[100];
    printf("Masukkan teks : ");
    gets(txt);
    int panjang = strlen(txt); //jumlah karakter teks yang dienkripsi
    
    printf("Teks yang akan dienkripsi : %s\n", txt); //coba print dulu
    
    int n=5;   //number key
    int number=0; //sebagai increment pembantu
    
    for(int i=0; i<n; i++){ //0,1,2,3,4
        if(i==0 || i==n-1){ //untuk baris 0 dan akhir
            int hop2 = i;
            for(; hop2<panjang;){
                hopeless[number++]=txt[hop2];
                hop2 = hop2 + n*2-2;
            }
        }
        else{   //untuk baris selain nol dan akhir
            int hop = i; 
            for(; hop<panjang;){
                hopeless[number++]=txt[hop];
                hop = hop + n*2-2*(i+1);
                if(hop>panjang)
                    break;
                hopeless[number++]=txt[hop];
                hop = hop + 2*i;
            }
        }
    }
    hopeless[number]='\0';
    printf("Hasil enkripsi : %s", hopeless);
    
    
    return 0;
}


2. Dekripsi (Pemecahan Sandi)
 #include <stdio.h>
#include <string.h>

int main()
{
    //char txt[20]="Aellhfgiltuneofcifk"; //teks yang akan didekripsi
    //char hasil[20]="";  //tempat menyimpan teks dekripsi
    char txt[100];
    char hasil[100];
    printf("Masukkan teks : ");
    gets(txt);
    int panjang = strlen(txt); //hasilnya 19
    
    printf("Teks yang akan didekripsi : %s\n", txt);
    
    int number = 0; 
    int n=5; //jumlah key
    for(int i=0; i<n; i++){ //baris 0 dan akhir
        if(i==0 || i==n-1){
            int hop=i;
            for(;hop<panjang;){
                hasil[hop]=txt[number++];
                hop=hop + n*2-2;
            }
        }
        else{ //untuk baris selain diatas
            int hop2=i;
            for(;hop2<panjang;){
                hasil[hop2]=txt[number++];
                hop2=hop2 + n*2-2*(i+1);
                if(hop2>panjang)
                break;
                hasil[hop2]=txt[number++];
                hop2 = hop2 + 2*i;
            }
        }

    }
    hasil[number]='\0';
    printf("Hasil dekripsi : %s", hasil);
    return 0;
}


Sekian, ini btw kodenya original milik blog ini, jadi kalau copas sertakan sumber ya.

Subscribe to receive free email updates:

0 Response to "Kode Rail Fence Chiper Bahasa C"

Post a Comment

Terkini