| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
xorneon 14.02.04 18:35 Esimerkki xor-salauksen toteuttamisesta php:llä
<?PHP /* lyhyesti xorista: oletetaan data seuraavaksi: 101011100 ja avain: 110 Jotta cryptaus toimisi tulee avaimesta tehdä datan pituinen. uusi avain: 110110110 suoritetaan operaatio 101011100 110110110 011101010 (tulos) heikkouksia: Jos data on pitkä ja avain lyhyt, niin voidaan cryptatusta datasta etsiä toistuvuuksia, joiden avulla voidaan paljastaa avain tai toisin päin. Ei verrannolinen ns. "todellisiin" eli laskennallisiin salakirjoituksiin. */ function repeat($data,$len) { $temp = str_repeat($data,(int)($len/strlen($data))); $last = $len - strlen($temp); $temp .= substr($data,0,$last); return $temp; } function crypt2($data,$key) { $key_len = strlen($key); $data_len = strlen($data); /* Toistetaan joko aivain tai data niin monta kertaa, että lyhyempi on pidemmän pituinen (molemmat saman pituisia. */ if($key_len > $data_len) { $data = repeat($data,$key_len); } else { $key = repeat($key,$data_len); } /* käytetään xor (^) bittioperaattoria */ return $data^$key; } ?> Crudus 21:55 15.2.04 olis ehkä hieman saanut olla kommentteja, en nyt tajunnut yhtään mitä tässä tapahtuu... uffis 10:37 8.6.04 suoritetaan operaatio 101011100 110110110 111111110 (tulos) Jos ymmärsin oikein, että tuossa on käytetty XORia, niin tuo tulos ei ole oikein. XOR tarkoittaa jompaa kumpaa mutta ei molempia, eli oikea tulos olisi 011101010. eis 14:02 1.7.04 jos tosiaan olisi 101011100 alkuperäinen 110110110 avain 111111110 kryptattuna ja laskettaisiin kommentin logiikalla, niin eihän tuosta voisi purkaa alkuperäistä lukua millään avaimenkaan kanssa? Alkuperäinen voisi olla tuo 101011100 tai vaikka 001001000 |
![]() Haku
|