LISTING PROGRAM
1. Class keygen.cs
using System; using System.Numerics;
namespace Program_Skripsi {
summary
Description of keygen.
summary public class keygen
{
private int prima; public keygenint p
{
this.prima = p;
}
public static BigInteger bilprimaBigInteger random{ int counter=0;
for int i=2; irandom; i++{ ifrandom i == 0
counter++; }
ifcounter 0 return 0; else return random;
}
public static BigInteger gcdBigInteger m, BigInteger n{
BigInteger r = m n;
while r = 0{
return gcdn,r;
} return n;
}
public static int kunci_eAint prima{
Random rnd = new Random;
int key_eA = rnd.Next2, prima-1; if gcdkey_eA,prima-1 == 1
return key_eA;
else
return kunci_eAprima;
}
public static int kunci_dAint prima, BigInteger eA{ int key_dA = 1;
BigInteger hasil = key_dAeA prima-1;
while hasil = 1 hasil = 0{
key_dA++;
Universitas Sumatera Utara
hasil = key_dAeA prima-1; }
if hasil == 0 key_dA=eA
return kunci_dA prima, eA;
else
return key_dA; }
public static BigInteger kunci_eBint prima{
Random rnd2 = new Random;
BigInteger key_eB = rnd2. Next2, prima-1;
if gcdkey_eB,prima-1==1
return key_eB;
else
return kunci_eBprima;
}
public static int kunci_dBint prima, int eA, int dA, BigInte
ger eB{ BigInteger hasil;
int key_dB=1; if gcdeB,prima-1==1 {
hasil = key_dBeB prima-1;
while hasil = 1 hasil = 0{
key_dB++; hasil = key_dBeB prima-1;
}
if hasil
== 0 key_dB=eA key_dB=dA key_dB=eB return
kunci_dBprima, eA, dA, eB; else
return key_dB; }
else
return kunci_dBprima, eA, dA, eB;
} }
}
2. Class MO.cs
using System; using System.Collections.Generic;
using System.Text; using System.Numerics;
namespace Program_Skripsi {
summary
Description of mo.
summary public class MO
{
private string teks; public MOstring t
Universitas Sumatera Utara
{
this.teks = t;
}
public static string enkripsiPlainstring plaintxt, int prima
, int eA{
StringBuilder bitsplain = new StringBuilder;
StringBuilder text = new StringBuilder;
BigInteger c1x; BigInteger
sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1;
foreach char c in plaintxt{
bitsplain. Appendc;
} BigInteger[] p =
new BigInteger[bitsplain.Length]; for int i=0; ibitsplain.Length; i++{
p[i] = Convert. ToInt32bitsplain[i];
c1x = BigInteger.Powp[i],eA prima; text.
Appendc1x;
text. Append ;
} return text.
ToString;
}
public static string enkripsiC1string C1,int prima, int eB{
string[] bitsplain = C1. Split ;
StringBuilder text = new StringBuilder;
BigInteger c2x; BigInteger[] c1 =
new BigInteger[bitsplain.Length];
BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1;
for int i=0; ibitsplain.Length-1; i++{
c1[i]=Convert. ToInt32bitsplain[i];
c2x = BigInteger.Powc1[i],eB prima; text.
Appendc2x;
text. Append ;
} return text.
ToString;
}
public static string dekripsiC2string C2,int prima, int dA{
string[] bitsplain = C2. Split ;
StringBuilder text = new StringBuilder;
BigInteger c3x; BigInteger[] c2 =
new BigInteger[bitsplain.Length];
BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1;
for int i=0; ibitsplain.Length-1; i++{
c2[i]=Convert. ToInt32bitsplain[i];
c3x = BigInteger.Powc2[i],dA prima; text.
Appendc3x;
text.
Append ;
} return text.
ToString;
}
public static string dekripsiC3string C3,int prima, int dB{
string[] bitsplain = C3. Split ;
Universitas Sumatera Utara
BigInteger plain; BigInteger[] c3 =
new BigInteger[bitsplain.Length];
StringBuilder sb = new StringBuilder;
BigInteger sum, sum2=1, aaa=0, hasil=0, sumx, sumx2=1;
for int i=0; ibitsplain.Length-1; i++{
c3[i]=Convert. ToInt32bitsplain[i];
plain = BigInteger.Powc3[i],dB prima;
char asli = charplain;
sb. Appendasli;
} return sb.
ToString;
} }
}
3. Class erCode.cs