S
silver
Gast
Hi @ all,
ich wollte mir eine simple Verschlüsselung basteln und habe nur ein kleines Problem,
dass ich irgendwie nicht verstehe! Es handelt sich um die XOR-Verschlüsselung
(ich habe auch die Forensuche benutzt und solche Themen gefunden, jedoch hab ich mir
das ein wenig anderster vorgestellt) und es scheint so als würde alles funktionieren außer
meine XOR() Methode. Ich habe durch Kontrollausgaben feststellen können, dass das XOR
richtig berechnet wird, jedoch ist der Rückgabewert nicht korrekt!!!
ich wollte mir eine simple Verschlüsselung basteln und habe nur ein kleines Problem,
dass ich irgendwie nicht verstehe! Es handelt sich um die XOR-Verschlüsselung
(ich habe auch die Forensuche benutzt und solche Themen gefunden, jedoch hab ich mir
das ein wenig anderster vorgestellt) und es scheint so als würde alles funktionieren außer
meine XOR() Methode. Ich habe durch Kontrollausgaben feststellen können, dass das XOR
richtig berechnet wird, jedoch ist der Rückgabewert nicht korrekt!!!
Code:
public class CDataEncryptionStandard {
private String message;
private String key="3db58a9f";
private int length=8;
public CDataEncryptionStandard(String msg) {
while(msg.length()>8&&this.length/msg.length()<1) this.length+=8;
message=msg;
}
public void getMSG() {
System.out.println("MSG: "+message);
}
private String Str2Bin() {
String binStr="";
for(int i=0;i<this.length;i++) {
if(i<message.length()) {
int chr=(int)message.charAt(i),init=128;
String tmp=Integer.toBinaryString((int)(message.charAt(i)));
while(chr<init) {
binStr+="0";
init/=2;
}
binStr+=tmp;
}
else binStr+="11111111";
}
return binStr;
}
private String Bin2Str() {
String str="";
for(int i=0;i<message.length();i+=8) {
int tmp=0,init=128;
for(int j=i;j<i+8;j++) {
if(message.charAt(j)!='0') tmp+=init;
init/=2;
}
if(tmp!=255) str+=(char)tmp;
}
return str;
}
private String getBinKey() {
String binStr="";
for(int i=0;i<key.length();i++) {
int chr=(int)key.charAt(i),init=128;
String tmp=Integer.toBinaryString((int)(key.charAt(i)));
while(chr<init) {
binStr+="0";
init/=2;
}
binStr+=tmp;
}
return binStr;
}
private String XOR() {
String str="";
for(int i=0,j=0;i<message.length();i++,j++) {
if(i%8==0&&i!=0) j=0;
str+=message.charAt(i)^key.charAt(j);
}
return str;
}
public void decrypt() {
message=Str2Bin();
key=getBinKey();
message=XOR();
message=Bin2Str();
}
/*
public void encrypt() {
}
*/
public static void main(String[] args) {
CDataEncryptionStandard cdes=new CDataEncryptionStandard("Hallo");
cdes.getMSG();
cdes.decrypt();
cdes.getMSG();
}
}