Gå til innhold

En XOR krypterer i php


Anbefalte innlegg

Videoannonse
Annonse
ja, dette:

 

<?php

$word = "foo";
$salt = "bar";

echo "word before: $word<br/>\n";

$encrypted = $word ^ $salt;

$decrypted = $encrypted ^ $salt;

echo "word after: $decrypted<br/>\n";

?>

Jeg har sett mange flere linjer med kode i C hvor man krypterer med XOR. Er ikke XOR en kryptering da ?

Lenke til kommentar
"xor" er det samme som "^" ja. akkurat som "and" og "&&" osv

Bare for å fjerne enhver potensiell tvil: Eksklusiv eller (^) er langt fra relatert til logisk og (&&). Den første tar for seg bit-operasjoner, den siste brukes i oppbyggingen av logiske uttrykk.

 

Jeg har sett mange flere linjer med kode i C hvor man krypterer med XOR. Er ikke XOR en kryptering da ?

Årsaken til at den tilsvarende koden i C er lenger, er at C ikke har tekststrenger og andre abstraksjonslag, slik som PHP har.

 

Eksklusiv eller er, som Torbjørn sier, ikke en krypteringsalgoritme, det er en operator. Den kan brukes til å gjøre tekst mindre leselig, men som krypteringsalgoritme duger den ikke annet enn på hobbybasis. Krypteringen til eksklusiv eller-kryptert tekst kan lett brytes, både av et program og for hånd.

Lenke til kommentar

En liten kommentar til - det gir lite mening, eller er noe upresist, å fortsatt snakke om "tekst" etter operasjonen.

 

det gir med mening å omtale det som binærdata.

 

idet du bitvis xor'er en variabel i php, opereres på bitrepresentasjonen av variabelen i php

 

*) et tall er da en 32 bit datamengde

*) en streng er en n ggr 8 bit datamengde, hvor n er lengden av strengen

*) en bool blir tilsvarende integer 1 eller 0

 

eks:

"A" har ascii-tallkoden 65, dvs 01000001 binært

"Å" har ascii-tallkoden 197, dvs 11000101 binært

 

Binært xor av disse gir:

01000001 <---- "A"

01000111 <---- "G"

--------------------------

00000110 <---- resultat av bitvis XOR

 

resultatet er tallet 6 representert binært.

 

dette tallet koder ikke for noe tegn som vises i vanlige tegnsett.

 

slik vil det være, du vil risikere å få en del tegn som ikke lengre har noen representasjon (f.eks carriage return, vertical tab, ... )

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...