| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
leikkaa ja liimaaraspi 25.12.01 09:39 Tee yhdestä tiedostosta 2 tiedostoa (xorrattu randomilla)
<?php /* (c) raspi 2001 ver. 0.1 (ei niin käyttäjäystävällinen) originaalista tiedostosta tehdään kaksi randomilla xorrattua tiedostoa. kun nämä kaksi xorrattua tiedostoa yhdistää niin saa originaalin datan. dataa ei saa palautettua muuten kuin näillä kahdella tiedostolla. Jos saat vain toisen tiedoston, et voi purkaa sitä mitenkään (kaikki on randomilla arvottu). eräänlainen salaus tämäkin.. :) voihan nämä kaksi tiedostoa vielä salata muullakin tavalla tämän lisäksi (esim. rot) :) */ function leikkaa ($tied) { $tall1 = "leikattu.1.txt"; $tall2 = "leikattu.2.txt"; $tiedosto = fopen($tied, "r"); flock($tiedosto, 1); while(!feof($tiedosto)) { $data .= fread($tiedosto, 128); } flock($tiedosto, 3); fclose($tiedosto); $tiedosto1 = fopen($tall1, "w"); $tiedosto2 = fopen($tall2, "w"); flock($tiedosto1, 2); flock($tiedosto2, 2); for($i = 0; $i < strlen($data); $i++) { // luetaan kirjain kerrallaan $o = ord(substr($data, $i, 1)); // kirjain muutetaan numeroksi $rnd = mt_rand(1, 255); // luodaan arvottu numero $s0 = $o ^ $rnd; // originaali numero xorrataan arvotun numeron kanssa $s1 = $s0 ^ $o; // originaalin ja arvotun kanssa xorrattu numero xorrataan originaalin kanssa $c1 = chr($s0); // muutetaan numero takaisin kirjaimeksi $c2 = chr($s1); // -||- fwrite($tiedosto1, $c1); fwrite($tiedosto2, $c2); } flock($tiedosto1, 3); flock($tiedosto2, 3); fclose($tiedosto1); fclose($tiedosto2); } /* -------------------------------------------------- */ function liimaa ($tied1, $tied2) { $tall = "liimattu.txt"; $tiedosto1 = fopen($tied1, "r"); flock($tiedosto1, 1); while(!feof($tiedosto1)) { $data1 .= fread($tiedosto1, 128); } flock($tiedosto1, 3); fclose($tiedosto1); $tiedosto2 = fopen($tied2, "r"); flock($tiedosto2, 1); while(!feof($tiedosto2)) { $data2 .= fread($tiedosto2, 128); } flock($tiedosto2, 3); fclose($tiedosto2); $tiedosto = fopen($tall, "w"); flock($tiedosto1, 2); for($i = 0; $i < strlen($data1); $i++) { // luetaan kirjain kerrallaan $s0 = ord(substr($data1, $i, 1)); // kirjain muutetaan numeroksi $s1 = ord(substr($data2, $i, 1)); // kirjain muutetaan numeroksi $xorrattu = $s0 ^ $s1; $lopp = chr($xorrattu); // num -> kirj fwrite($tiedosto, $lopp); } flock($tiedosto1, 3); fclose($tiedosto); } // usage: // leikkaa("testi.txt"); // liimaa("leikattu.1.txt", "leikattu.2.txt"); ?> pekkajarvinen@kolumbus.fi konst-a 17:05 25.1.05 Xor"salauksia" kutsutaan enemmänkin avauksiksi, erittäin arvattava keino. Miksi käyttää tällaista salausta kun php on itsessään täynnä hyviä salausalgoritmeja? |
![]() Haku
|