XOR-Verschlüsslung

JohnDen

Neues Mitglied
Hallo,
ich muss ein Programm schreiben, dass mit XOR bzw "^" einen Text verschlüsseln kann.

Dabei habe ich folgende Probleme:
  1. ich muss das Passwort irgendwie auf die Länge des Textes bringen.
  2. ich muss aus den Strings der Eingabe, irgendwie einen binären Integer erstellen.
Ich hoffe ihr könnt mir weiter helfen
 

DrZoidberg

Top Contributor
Du kannst jeden Buchstaben einzeln in einen int Wert umwandeln und dann per xor mit dem entsprechenden int Wert des Schlüssels verknüpfen. Das Passwort kannst du auf die benötigte Länge bringen, indem du Zufallszahlen erzeugst und als Seed das Passwort verwendest.
z.B. so
Java:
String passwort = ...;
long seed = 0;
for(char c: passwort.toCharArray()) {
  seed = seed * 256 + (long)c;
}
Random rand = new Random(seed);
 

DrZoidberg

Top Contributor
So zum Beispiel

Java:
static byte[] verschluesseln(byte[] bytes, String passwort) {
  long seed = 0;
  for(byte b: passwort.getBytes()) {
    seed = seed * 256 + (0xFF & b);
  }
  Random rand = new Random(seed);

  byte[] verschluesselt = new byte[bytes.length];
  for(int i = 0; i < bytes.length; i++) {
    verschluesselt[i] = (byte)(bytes[i] ^ rand.nextInt(256));
  }

  return verschluesselt;
}
public static void main(String[] args) {
  String text = "geheime Nachricht";
  String passwort = "12345";

  byte[] verschluesselt = verschluesseln(text.getBytes(), passwort);
  System.out.println("verschluesselte Nachricht: " + Arrays.toString(verschluesselt));
  String entschluesselt = new String(verschluesseln(verschluesselt, passwort));
  System.out.println("entschluesselt: " + entschluesselt);
}
 

Ähnliche Java Themen

Neue Themen


Oben