|
| Spørgsmål til xor og andre funktioner Fra : Kasper Johansen |
Dato : 28-08-05 13:17 |
|
Hej gruppe.
Jeg sad for sjovt skyld, og prøvede at lave en "Direct Connect"-protokol til
PHP, da jeg tror at protokollen har en masse muligheder - Ikke bare til
ulovlig fildeling ;) Men nok om det.
Under auth med en "hub" (en server) skal man igennem en masse crap. Blandt
andet skal man convertere en "lock" til en "key", som gøres på denne måde i
noget der kunne minde om C (jeg kan ikke C og aner ikke rigtig hvadfor en
syntaks det er faktisk).
for (i = 1; i < len; i++)
key[i] = lock[i] xor lock[i-1];key[0] = lock[0] xor lock[len-1] xor
lock[len-2] xor 5for (i = 0; i < len; i++)
key[i] = ((key[i]<<4) & 240) | ((key[i]>>4) & 15)
Hvad gør "xor" helt præcist?
Som jeg har forstået det, vil "xor" fungere på den måde at den returnere
sand, hvis kun det ene argument, og kun det ene, er sandt, ellers falskt.
Men hvordan virker det på "key[0] =" ???
Og hvad sker der helt præcist i sidste linje?
--
Mvh Kasper Johansen
| |
Kasper Johansen (28-08-2005)
| Kommentar Fra : Kasper Johansen |
Dato : 28-08-05 13:20 |
|
"Kasper Johansen" <kasper@johansen.tdcadsl.dk> skrev i en meddelelse
news:4311aaa6$0$7623$ba624c82@nntp02.dk.telia.net...
> for (i = 1; i < len; i++)
> key[i] = lock[i] xor lock[i-1];key[0] = lock[0] xor lock[len-1] xor
> lock[len-2] xor 5for (i = 0; i < len; i++)
> key[i] = ((key[i]<<4) & 240) | ((key[i]>>4) & 15)
Outlook Express er ikke ligefrem den bedste klient. Vi prøver igen uden copy
paste så min email-klient også kan følge med:
for (i = 1; i < len; i++)
key[i] = lock[i] xor lock[i-1];
The first key character is calculated from the first lock character and the
last two lock characters:
key[0] = lock[0] xor lock[len-1] xor lock[len-2] xor 5
Next, every character in the key must be nibble-swapped:
for (i = 0; i < len; i++)
key[i] = ((key[i]<<4) & 240) | ((key[i]>>4) & 15)
--
Mvh Kasper Johansen
| |
Bertel Lund Hansen (28-08-2005)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 28-08-05 15:02 |
|
Kasper Johansen skrev:
> Hvad gør "xor" helt præcist?
XOR står for "exclusive or" - netop én af værdierne må være sand
for at resultatet skal blive sandt; ellers giver det falsk:
OR
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1
XOR
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0 NB!
Når man xor'er to tal, bliver de xor'et bitvis:
111 XOR 101 = 010
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
|
|