Binärverschlüsselung

Datum
23.11.2020

Die einfachste, gleichzeitig eine sehr sichere, Verschlüsselung ist die XOR Verschlüsselung, dabei werden die Bits mit einem exklusiven oder vertauscht. Es ist eine symmetrische Verschlüsselung, das bedeutet, dass es ein Passwort gibt und beide Kommunikationspartner müssen dieses wissen.

Was ist XOR bzw. exklusives oder

XOR ist ein Boolescher Operator, der aussagt, wenn die vergleichenden Werte unterschiedlich sind, ist das Ergebnis wahr.

XOR

A B Ergebnis
wahr (1) wahr (1) falsch (0)
wahr (1) falsch (0) wahr (1)
falsch (0) wahr (1) wahr (1)
falsch (0) falsch (0) falsch (0)

Verschlüsseln

Wenn du jetzt ein Text hast z.B. „Hello World“, wird dieser in ASCII gespeichert. Wenn man es genau nimmt wird der Text in Binär gespeichert (Strom / kein Strom). Jetzt kannst du mit einem Passwort und XOR, die Binärzahlen codieren.

Beispiel

den Text in Binär

Text: Hallo World

das Passwort in Binär

Ich nehme einfach halber die gleiche Länge.

Passwort: qwertzuiopü

XOR anwenden

So würde der Binärcode aussehen, wenn du alles codierst.

So würde der ASCII-Code aussehen.

JavaScript XOR – Hacky Code

var textinput = "Hallo World";
var passwort = "qwertzuiopü";
var  output1=document.getElementById("ti1"); 
var  output2=document.getElementById("ti2"); 
var  output3=document.getElementById("ti3"); 
var  output4=document.getElementById("ti4"); 

function textToBin(text) {
  var length = text.length,
      output = [];
  for (var i = 0;i < length; i++) {
    var bin = text[i].charCodeAt().toString(2);
    output.push(Array(8-bin.length+1).join("0") + bin);
  } 
  return output.join("");
}

function binxor(bin1, bin2) {
  var bin = "";
  for (var i = 0; i < bin1.length; i++) {
      bin += bin1[i] ^ bin2[i];
  }
  return bin;
}

var bin_text = textToBin(textinput);
var bin_passwort = textToBin(passwort);
output1.value = bin_text;
output2.value = bin_passwort;

var crypt = binxor(bin_text,bin_passwort);

function convertToChar(bin) {
  var charText = "";
  for (var i = 0; i <= bin.length; i = i+8) {
      charText += String.fromCharCode(parseInt(bin.slice(i, i+8), 2));
  }
  return charText;
}

output3.value = crypt;
output4.value = convertToChar(crypt);

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.