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);
}
}
|