import java.net.SocketException;
public class EnCrypt {
public int p;//Grosse Primzahl p, es gilt p = 2*q +1, öffentlich
public int a;//Primitivwurzel von p, öffentlich
public int y1;//Teilschlüssel 1 (aus a und k1), öffentlich
public int c1;//1. Teil der verschlüsselten Nachricht (aus a und k1 bzw. k2 mod p)
public int c2;//2. Teil der verschlüsselten Nachricht (aus s und m mod p)
private int m;//Erkennungsmerkmal eines Netzteilnehmers (zu verschlüsselnde Zahl), 0<=m<=p-1, geheim
private int k1;//Zufällige Zahl zwischen 0 und p-1 (Teilnehmer A), geheim
private int s;//Geheimer, gemeinsamer Schlüssel (aus a, k1 und k2 mod p), geheim
//Referenz DeCrypt
private DeCrypt deCrypt;
public EnCrypt (DeCrypt deCrypt) {
//Referenz DeCrypt
this.deCrypt = deCrypt;
//Primzahl P (öff)
p = 11;
//Primitivwurzel a (öff)
a = 7;
//geh. Zahl k1
k1 = (int) (Math.random()*(p-1));
//Teilschlüssel (öff)
y1 = (a^k1)%p;
//gemeinsamer Schlüssel s (geh.)
s = ((deCrypt.y2)^k1)%p;
//Mac-Address
m = 4;
//1. Teil der Nachricht (öff)
c1 = (a^k1)%p;
//2. Teil der Nachricht (öff)
c2 = (s*m)%p;
//Kontrollausgabe
System.out.println("Verschlüsselung");
System.out.println("Nachricht 1: "+c1);
System.out.println("Nachricht 2: "+c2);
System.out.println("Nachricht Ursprung: "+m);
System.out.println("Schlüssel: "+s);
}
}