Implementasi Kriptografi Hybrid Algoritma Elgamal dan Double Playfair Cipher Dalam Pengamanan File JPEG Berbasis Desktop

85

LISTING PROGRAM
keygenerator.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Numerics;
using System.IO;
namespace Skripsiku
{
///
/// Description of keygenerator.
///
public partial class keygenerator : Form
{
int p,alpa,d, beta;
Random r = new Random();
public keygenerator()
{
//

// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
public int modexp(int x, int y, int n)
{
int z = 1;
for (int i = 0; i < y ; i++){
z = (x * z) % n;
}
return z;
}
public int PseudoPrime(int n)
{
BigInteger modularExponentiation = BigInteger.ModPow(2,n-1, n);
if (modularExponentiation == 1)
{

return n;
}
else
{
return PseudoPrime(r.Next(257,5000));

Universitas Sumatera Utara

86

}
}
void MenuToolStripMenuItemClick(object sender, EventArgs e)
{
MainForm menampilkan = new MainForm();
menampilkan.Show();
this.Hide();
}
void AboutToolStripMenuItemClick(object sender, EventArgs e)
{

About menampilkan = new About();
menampilkan.Show();
this.Hide();
}
void KeyGeneratorToolStripMenuItemClick(object sender, EventArgs e)
{
keygenerator menampilkan = new keygenerator();
menampilkan.Show();
this.Hide();
}
void HelpToolStripMenuItemClick(object sender, EventArgs e)
{
Help menampilkan = new Help();
menampilkan.Show();
this.Hide();
}
void EnkripsiToolStripMenuItemClick(object sender, EventArgs e)
{
enkripsi menampilkan = new enkripsi();
menampilkan.Show();

this.Hide();
}
void DekripsiToolStripMenuItemClick(object sender, EventArgs e)
{
dekripsi menampilkan = new dekripsi();
menampilkan.Show();
this.Hide();
}
void KeygeneratorLoad(object sender, EventArgs e)
{

Universitas Sumatera Utara

87

}
void Button2Click(object sender, EventArgs e)
{
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "key Files( *.key)|*.key";

simpan.FileName = "*.key";
if (simpan.ShowDialog() == DialogResult.OK)
{
string filename = simpan.FileName.Substring(0, simpan.FileName.Length 3) + "key";
FileStream fstream = new FileStream(filename, FileMode.Create);
StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin();
sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(textBox1.Text);
sw.WriteLine(textBox4.Text);
sw.Flush();
sw.Close();
MessageBox.Show("kunci berhasil disimpan");
}
}
void Btn_publicClick(object sender, EventArgs e)
{
SaveFileDialog simpan = new SaveFileDialog();
simpan.Filter = "key Files( *.key)|*.key";
simpan.FileName = "*.key";

if (simpan.ShowDialog() == DialogResult.OK)
{
string filename = simpan.FileName.Substring(0, simpan.FileName.Length 3) + "key";
FileStream fstream = new FileStream(filename, FileMode.Create);
StreamWriter sw = new StreamWriter(fstream);
SeekOrigin seekorigin = new SeekOrigin();
sw.BaseStream.Seek(0, seekorigin);
sw.WriteLine(textBox1.Text);
sw.WriteLine(textBox2.Text);
sw.WriteLine(textBox4.Text);
sw.Flush();
sw.Close();
MessageBox.Show("kunci berhasil disimpan");
}
}

Universitas Sumatera Utara

88


void Btn_generateClick(object sender, EventArgs e)
{
p = PseudoPrime(r.Next(257,5000));
textBox1.Text = p.ToString();
alpa = r.Next(2,p-1);
textBox2.Text = alpa.ToString();
d = r.Next(2,p-2);
textBox3.Text = d.ToString();
beta = modexp(alpa,d,p);
textBox4.Text = beta.ToString();
}
}
}
enkripsi.cs
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace Skripsiku

{
///
/// Description of enkripsi.
///
public partial class enkripsi : Form
{
Random rnd = new Random();
List c1 = new List();
List c2 = new List();
List plain = new List();
List cpher = new List();
int prime, alpa, beta, r;
string plainkey;
Bitmap gambarasli, gambarenkrip;
int[] angka = new int[256];
int[] aangka = new int[256];
int ab = 0;
int aab = 0;
public enkripsi()
{

//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();

Universitas Sumatera Utara

89

//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void MenuToolStripMenuItemClick(object sender, EventArgs e)
{
MainForm menampilkan = new MainForm();
menampilkan.Show();
this.Hide();
}
void AboutToolStripMenuItemClick(object sender, EventArgs e)

{
About menampilkan = new About();
menampilkan.Show();
this.Hide();
}
void HelpToolStripMenuItemClick(object sender, EventArgs e)
{
Help menampilkan = new Help();
menampilkan.Show();
this.Hide();
}
void EnkripsiToolStripMenuItemClick(object sender, EventArgs e)
{
enkripsi menampilkan = new enkripsi();
menampilkan.Show();
this.Hide();
}
void DekripsiToolStripMenuItemClick(object sender, EventArgs e)
{
dekripsi menampilkan = new dekripsi();

menampilkan.Show();
this.Hide();
}
void KeyGToolStripMenuItemClick(object sender, EventArgs e)
{
keygenerator menampilkan = new keygenerator();
menampilkan.Show();
this.Hide();
}
void Button1Click(object sender, EventArgs e)
{

Universitas Sumatera Utara

90

OpenFileDialog ofd = new OpenFileDialog();
ofd.InitialDirectory = @"D:\"; // menentukan direktori awal saat browse file
ofd.Title = "Browse Image File"; //set title pada window browse file
ofd.CheckFileExists = true; // set pengecekan file harus ada atau valid
ofd.DefaultExt = "jpeg"; // set tipe file default
ofd.Filter = "image files|*.jpg;*.png"; // filter untuk menentukan file apa saja
yang boleh dipilih
ofd.FilterIndex = 0; // menentukan filter index, index dimulai dari nol
ofd.RestoreDirectory = true; // menentukan nilai restorasi direktori
ofd.ReadOnlyChecked = true; // set nilai bahwa file hanya akan dibaca atau read
ofd.ShowReadOnly = true; // set nilai untuk menampilkan file
if (ofd.ShowDialog() == DialogResult.OK)
{
// jika sudah, tampilkan gambar dalam pictureBox dengan mode
Stretch(disesuaikan dengan picturebox)
pictureBox1.Image = new Bitmap(ofd.FileName);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
void PictureBox1Click(object sender, EventArgs e)
{
}
void EnkripsiLoad(object sender, EventArgs e)
{
}
public int modexp(int x, int y, int n)
{
int z = 1;
for (int i = 0; i < y ; i++){
z = (x * z) % n;
}
return z;
}
public int modexp(int x, int z, int y, int n)
{
for (int i = 0; i < y ; i++){
z = (x * z) % n;
}
return z;
}
void Button7Click(object sender, EventArgs e)
{

Universitas Sumatera Utara

91

plainkey = textBox1.Text + "~" + textBox2.Text;
prime=int.Parse(textBox3.Text);
alpa =int.Parse(textBox4.Text);
beta =int.Parse(textBox5.Text);
do
{
r = rnd.Next(1,prime-1);
}
while(r>= (prime-1));
for (int i=0; i