Jumat, 20 Maret 2015

Enkripsi Pesan dengan teknik RSA



Penulis mengimplementasikan sebuah teknik kriptografi menggunakan teknik RSA untuk me enkripsikan sebuah pesan (string)





Kalkaltor RSA

Contoh penggunakan library untuk kalkulator RSA



public void CaraHitungNilaiRSA()
{
 /*penggunaan RSA sangat unik!
  * dikarenakan kita menggunakan public key dan private key
  * public key yaitu d dan N
  * private key yaitu e dan N
  * Bagaimana menentukan nilai e,d, dan N?
  * maka kita membutuhkan nilai awal
  * p,q, dan e yang nilai tersebut bilangan prima!
  * jadi pastikan dulu bilangan tersebut PRIMA!
  */
 int p = 1301;
 int q = 4001;
 int e = 98981;
 if (!Helper.IsPrime(p))
 {
  Console.WriteLine("p bukan bilangan prima!");
  return;
 }
 if (!Helper.IsPrime(q))
 {
  Console.WriteLine("q bukan bilangan prima!");
  return;
 }
 if (!Helper.IsPrime(e))
 {
  Console.WriteLine("e bukan bilangan prima!");
  return;
 }
 /*setelah semua dipastikan bilangan prima!
  * maka gunakan class RSA untuk menghitung nilai d dan N nya
  */
 RSA rsa = new RSA(p, q, e);
 Console.WriteLine("Public key \n"+
  "e : "+e.ToString()+"\n"+
  "N : "+rsa.N.ToString()
  );

 Console.WriteLine("Private key \n" +
  "d : " + rsa.D.ToString() + "\n" +
  "N : " + rsa.N.ToString()
  );
  
 /*setelah mendapatkan nilai e,d, dan N
  * maka anda siap gunakan nilai tersebut untuk melakukan proses enkripsi dan dekripsi
  * yaitu berupa nilai angka!
  */
 int nilaiAwal = 100;
 rsa.SetPublicKey(e, int.Parse(rsa.N.ToString())); //set nilai public key nya!
 int nilaiEnkripsi = rsa.DoEncrypt(nilaiAwal); //proses enkripsi!
 Console.WriteLine(nilaiAwal + " diubah " + nilaiEnkripsi);
 /* pasti nilai nya akan berbeda!
  * untuk mengubah kembali, gunakan dekripsi
  */
 rsa.SetPrivateKey(int.Parse(rsa.D.ToString()), int.Parse(rsa.N.ToString())); //set nilai public key nya!
 int nilaiDekripsi = rsa.DoDecrypt(nilaiEnkripsi);
 Console.WriteLine(nilaiEnkripsi + " diubah " + nilaiDekripsi);



}


       
 

Menghasilkan


Enkripsi RSA

Contoh penggunakan library untuk Enkripsi RSA




public void EnkripsiPesanDenganRSA()
{
 Console.WriteLine("ENKRIPSI DENGAN RSA");
 String rahasia = "ini adalah sebuah pesan rahasia!"; //pesan asli
 Console.WriteLine("\nKALIMAT AWAL :\n" + rahasia);
 int[] kodeASCII = Helper.Huruf2Angka(rahasia); // string diubah menjadi array ascii
 //set kunci public dan private
 int e = 79;
 int d = 1019;
 int N = 3337;
 RSA rsa = new RSA(); //panggil class RSA
 rsa.SetPublicKey(e, N); //tetapkan kunci RSA nya!
 int[] kodeEnkripsi = new int[kodeASCII.GetLength(0)];
 for (int i = 0; i < kodeASCII.GetLength(0); i++)
 {
  kodeEnkripsi[i] = rsa.DoEncrypt(kodeASCII[i]); //lakukan proses enkripsi satu-persatu
  
 }
 String paketKalimat = Helper.PaketKalimat(kodeEnkripsi);
 
 String kalimat = Helper.KalimatAngka2Huruf(paketKalimat);
 Console.WriteLine("\nKALIMAT HASIL ENKRIPSI :\n" + kalimat);

 /* selanjutnya proses dekripsi yaitu
  * 
  */
 int[] code2 = Helper.Huruf2Angka(kalimat); //ubah string menjadi array ascii
 paketKalimat = null;
 for (int i = 0; i < code2.GetLength(0); i++)
 {
  paketKalimat += code2[i].ToString();
 }
 //Console.WriteLine(kalimatAngka);
 
 paketKalimat = Helper.UraiPaket(paketKalimat); //urai paket kebalikan dari proses paket kalimat!
 
 String[] kalimat3 = paketKalimat.Split('#'); //gunakan tanda # untuk split
 rsa.SetPrivateKey(d, N); //tetapkan private key
 int[] kodeDekripsi = new int[kalimat3.GetLength(0) - 1];
 for (int i = 0; i < kodeDekripsi.GetLength(0); i++)
 {
  kodeDekripsi[i] = rsa.DoDecrypt(int.Parse(kalimat3[i].ToString())); //lakukan proses dekripsi satu - persatu
  
 }

 String urai = Helper.Angka2Huruf(kodeDekripsi); //ubah code ascci menjadi string
 Console.WriteLine("\nKALIMAT HASIL DEKRIPSI :\n" + urai);
}


       
 


GUI




Posting Komentar