summaryrefslogtreecommitdiffstats
path: root/Master/Kryptografie/p2/GalController.java
blob: 00a34f27a2a270f021eaacae54348538219b85c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package krypto;

public class GalController {
	
	int key_s = 7;
	int key_t = 3; 
	
	private char encryptChar(char klar)
	{		
		GalNumber gn_geheim = new GalNumber();
		GalNumber gn_klar = new GalNumber((int)klar);
		GalNumber gn_key_s = new GalNumber(key_s);
		GalNumber gn_key_t = new GalNumber(key_t);
		GalNumber rijndael_mod = new GalNumber(GalNumber.RIJN_MOD);
		
		gn_geheim = gn_klar.add(gn_key_s).mult(gn_key_t.mod(rijndael_mod));
		
		System.out.println("Klar: "+gn_klar.toHex()+" Geheim: "+gn_geheim.toHex());
				
		return gn_geheim.toChar();
	}
	
	private char decryptChar(char geheim)
	{		
		GalNumber gn_geheim = new GalNumber();
		GalNumber gn_klar = new GalNumber();
		GalNumber gn_key_s = new GalNumber(key_s);
		GalNumber gn_key_t = new GalNumber(key_t);
		GalNumber rijndael_mod = new GalNumber(GalNumber.RIJN_MOD);
		
		gn_geheim.setVal((int) geheim);
				
		gn_klar = gn_geheim.mult(gn_key_t.inv()).sub(gn_key_s.mod(rijndael_mod));
		
		System.out.println("Geheim char: "+geheim+" int "+(int)geheim+" GN Geheim: "+gn_geheim.toHex()+" Klar: "+gn_klar.toHex());
		
		return gn_klar.toChar();
	}
	
	public String encrypt(String klarText)
	{
		char [] chars = new char[klarText.length()];
		for (int i=0;i<klarText.length();i++)
		{
			chars[i] = encryptChar(klarText.charAt(i));
		}
		String geheimText=new String(chars);
		return geheimText;
	}
	
	public String decrypt(String geheimText)
	{
		char [] chars = new char[geheimText.length()];
		for (int i=0;i<geheimText.length();i++)
		{
			//System.out.println("cipher "+i+": "+geheimText.charAt(i)+" int: "+(int) geheimText.charAt(i));
			chars[i] = decryptChar(geheimText.charAt(i));
		}
		String klarText=new String(chars);
		return klarText;
	}
	
	public void setKeyS(int s)
	{
		key_s = s;
	}
	public void setKeyT(int t)
	{
		key_t = t;
	}
	public void setKeyST(int s, int t)
	{
		setKeyS(s);
		setKeyT(t);
	}
}