Hallo Leute!
Ich habe die Verschlüsselungsmethoden Vigenere und Caesar programmiert.
Diese geben aber beim entschlüsseln gewollt dann einen in nur Großbuchstaben konvertierten Text zurück.
Dabei habe ich jetzt die Frage, wie ich denn andere Alphabete verwenden kann wie z.B. nur klein Buchstaben oder Hexa Dezimal usw.
Hier meine Methoden:
Vigenere:
Caesar:
Vielen Dank!
Ich habe die Verschlüsselungsmethoden Vigenere und Caesar programmiert.
Diese geben aber beim entschlüsseln gewollt dann einen in nur Großbuchstaben konvertierten Text zurück.
Dabei habe ich jetzt die Frage, wie ich denn andere Alphabete verwenden kann wie z.B. nur klein Buchstaben oder Hexa Dezimal usw.
Hier meine Methoden:
Vigenere:
Java:
@Override
public String encrypt(String orginal, Key k)
{
VigenereKey vK = (VigenereKey)k;
String schluessel = vK.getKey();
String geheim="";
String text=orginal.toUpperCase();
String key=schluessel.toUpperCase();
int y=0;
for (int i=0; i<text.length(); i++) {
if (y==key.length()) y-=key.length();
int a = (((int) key.charAt(y))+((int) text.charAt(i))-100);
if (a>90) a-=26;
geheim+=(char)a;
y++;
}
return geheim;
}
@Override
public String decrypt(String orginal, Key k)
{
VigenereKey vK = (VigenereKey)k;
String schluessel = vK.getKey();
String klartext="";
String text=orginal.toUpperCase();
String key=schluessel.toUpperCase();
int y=0;
for (int i=0; i<text.length(); i++) {
if (y==key.length()) y-=key.length();
int a = (((int) text.charAt(i))-((int) key.charAt(y))+100);
if (a<65) a+=26;
klartext+=(char)a;
y++;
}
return klartext;
}
Caesar:
Java:
public String encode(String s){
return encode(s, verschiebung);
}
public String decode(String s){
return encode(s, 26-verschiebung);
}
private String encode(String s, int verschiebung){
s = s.toUpperCase();
char[] chars = s.toCharArray();
for(int i = 0; i < s.length(); i++)
chars[i] = encode(chars[i], verschiebung);
return String.valueOf(chars);
}
private char encode(char c, int verschiebung){
if(c >= 'A' && c <= 'Z')
return (char)((c-'A'+verschiebung)%26 + 'A');
else
return c;
}
private int wieOftChar(String s, char c){
int times = 0;
for(int i = 0; i < s.length(); i++)
if(s.charAt(i) == c)
times++;
return times;
}
public String decrypt(String original, Key s) {
CaesarKey key = (CaesarKey)s;
int schluessel = key.getKey();
String geheimText = "";
int a;
original = original.toUpperCase();
for(int i=0; i<original.length(); i++){
a=(int) original.charAt(i);
if(a ==' '); else a-=schluessel;
if(a<65) a+=26;
geheimText += (char) a;
}
return geheimText;
}
public String encrypt(String original, Key s) {
CaesarKey key = (CaesarKey)s;
int schluessel = key.getKey();
String geheimText = "";
int a;
original = original.toUpperCase();
for (int i=0; i<original.length(); i++){
a=(int) original.charAt(i);
if(a==' '); else a+=schluessel;
if(a>90) a-=26;
geheimText += (char) a;
}
return geheimText;
}
Vielen Dank!