Wat is de toegevoegde waarde van het toevoegen van een Cipher voor het versleuten van een String bijvoorbeeld?
Een string bestaat uit karakters. (een karakter is een letter, cijfer of leesteken)
Omdat de meeste computerapparatuur van nature alleen de cijfers 0 en 1 kent, moet zo'n letter, cijfer of leesteken worden uitgedrukt in nullen en enen.
Dat is vooral een kwestie van definitie: welke combinatie van nullen enen stelt welk karakter voor.
Er kunnen ook codes bij zijn inbegrepen zoals CR (carriage return) LF (linefeed) en andere besturingscodes.
Het geheel van al die definities wordt meestal vastgelegd in een karakter tabel zoals bijv. de ASCII-tabel en UTF8.
Een voorbeeld:
We gaan in dit voorbeeld uit van een string die is gedefinieerd volgens de ASCII-tabel.
De karakters zijn dus gedefinieerd volgens
https://www.asciitable.com/Laten we eens een string nemen:
(en ja, ik weet dat ik sommigen daar een plezier mee doe...)
Hoe ziet deze string eruit volgens ASCII en dat uitgedrukt in enen en nullen?
We beginnen bij de V van
Vanavond.
De hoofdletter V blijkt volgens de ASCII tabel octaal uit te worden gedrukt in 126.
In een octaal getal stellen de cijfers groepjes van 3 bits voor.
Dus "V" = 001 010 110, en omgezet naar een byte (=8 bits) wordt dat 01010110 (= hexadecimaal 56)
Doen we hetzelfde met alle anders karakters van de string, dan krijgen we als binaire weergave van deze string:
01010110 01100001 01101110 01100001 01110110 01101111 01101110 01100100 00100000 01100101 01110100 01100101 01101110 00100000 01110111 01100101 00100000 01110000 01100001 01110100 01100001 01110100
In werkelijkheid eigenlijk gewoon aan elkaar vast, dus:
01010110011000010110111001100001011101100110111101101110011001000010000001100101011101000110010101101110001000000111011101100101001000000111000001100001011101000110000101110100
(door de lengte loopt de code hier uit zijn voegen)
Deze string van enen en nullen kan vrij gemakkelijk weer terug worden omgezet naar de normale menselijke taal die er achter schuilt: "Vanavond eten we patat".
Omdat iedereen dit zou kunnen meelezen [dat wil je niet, het zou natuurlijk storm lopen, je huis is te klein en eh...
vele varkens maken de spoeling dun...]
kunnen we op deze string die d.m.v. enen en nullen in ASCII is weergegeven encryptie toepassen.
Hier komen we bij de vraag: wat doet encryptie nu eigenlijk?
Encryptie zorgt ervoor er een aantal enen en nullen blijft zoals ze zijn, en andere enen en nullen inverteren
(inverteren is: 1 wordt 0, en 0 wordt 1)
Maar welke bits (want dat zijn het) moeten wel en welk moeten er niet worden geïnverteerd?
That's the ultimate question indeed!
En het antwoord hierop is: DAT WORDT GROTENDEELS BEPAALT DOOR HET CIPHER.
Het cipher is een algoritme dat in zo'n reeks van enen en nullen aanwijst welke bits er moeten veranderen en welke niet.
Een goed algoritme is zo gewiekst dat het na een lange periode van gadeslaan op het oog zou lijken dat het puur toeval is welke bits er veranderen en welke niet.
Bij het decrypten wordt eenvoudig hetzelfde nog eens opnieuw gedaan.
Door alle bits die eerder al eens waren geïnverteerd nog een keer te inverteren,
krijgen ze weer de oorspronkelijke "unencrypted" waarde terug, en is weer na te trekken wat er staat.