ďťż
Podstrony
|
telcocafeWitam witamNapisałem taki prosty "system szyfrowania". Ma być prosty i gładki :) <?php if (isset($_GET['szy']) && !isset($_GET['od'])) { $zamien = array( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ); $na = array( '1', '2', '3', '4', '5', '6', '7', '8', '9', '@', '#', '$', '%', '^', '&', '*', '=', '+', ';', ':', '?', '>', '<', '~', '|', '!'); $ciag = strtolower($_GET['pole']); $zamienione = str_replace($zamien, $na, $ciag); echo("Ciąg <b>$_GET[pole]</b> to <font color='red' size='4'><b>$zamienione</b></font>"); } else { $na2 = array( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ); $zamien2 = array( '1', '2', '3', '4', '5', '6', '7', '8', '9', '@', '#', '$', '%', '^', '&', '*', '=', '+', ';', ':', '?', '>', '<', '~', '|', '!'); $ciag2 = strtolower($_GET['pole']); $zamienione2 = str_replace($zamien2, $na2, $ciag2); echo("Ciąg <b>$_GET[pole]</b> to <font color='red' size='4'><b>$zamienione2</b></font>"); } ?> Teraz muszę wymyślić drugi system szyfrowania (nieskomplikowany, prosty) który byłby od biedy podobny do ostatniego. Macie jakieś pomysły na nowy skrypt? (nie chodzi mi o gotowe funkcje md5 itp tylko o własny pomysł) Koduj na hexy, mnóż przez liczbę kolejności litery, dodawaj swoje znaki, przerabiaj na bina, a później znów na deca xD Jak ci się nudzi, xoruj... metod jest wiele, wystarczy przejrzeć 4p, żeby znaleźć najróżniejsze pomysły :) edit: te publikowane w necie zazwyczaj są proste ;) Użytkownik DJ_ProG edytował ten post 14 październik 2007, 21:21 Dzięki. Znalazłem na 4p proste szyfrowanie. Wywaliłem zbędne funkcje konwertujące i oto kod: <?php function koduj ( $str ) { $temp = ''; for ( $i = 0; $i < strlen( $str ); $i++) { $temp = ord( $str[$i] ); $result .= $temp; } return $result; } function dekoduj ( $str ) { $temp = ''; for ( $i = 0; $i < strlen( $str ); $i++) { $temp = chr( $temp ); $result .= $temp; } return $result; } $tekst = 'daria'; $zakodowany_tekst = koduj( $tekst ); $odkodowany_tekst = dekoduj( $zakodowany_tekst ); echo $tekst . '<br><br>'; echo $zakodowany_tekst . '<br>'; echo $odkodowany_tekst; ?> Co może być źle? W końcu dałem tylko chr() i ord(), ale skrypt się rozkłada na rozszyfrowaniu (nic nie wyświetla, nie dekoduje tekstu. przy kodowaniu jest ok). :| Potrzebuję najprostszego przykładu jaki może być :D Użytkownik sauron edytował ten post 14 październik 2007, 21:42 chr($str[$i]) i będzie działać :) Lipa :) Wywala mi znaki zapytania ;] tekst (tekst do zaszyfrowania/odszyfrowania) 116101107115116 (zaszyfrowane) �� (odszyfrowane) Ach, operacje tablicowe na stringach nie są możliwe na integerach :P Sprawdź dokładnie,czy to jest string. Np. wstaw przed zmienną bądź wywołaniem funkcji koduj (string). Dobra :P Znalazłem coś ciekawszego: $x='Daria'; $y=preg_replace('/(.)/e', 'chr(ord(\'$1\')+3)', $x); Może mi ktoś wytłumaczyć dokładnie po kolei jakie będą zachodzić 'procesy' w zmiennej $y? Rozumiem o co chodzi w chr() i ord(), natomiast możecie mi wytłumaczyć na 'chłopski rozum' co jest z tym: /(.)/e Patrzyłem na manual i inne strony, ale nadal tego nie kumam. :\ Przełącznik e oznacza,że wynik będzie wysyłany do funkcji. Natomiast dot to jest dowolny znak. Nawiasy oraz slashe mam nadzieję,że wiesz do czego służą :) Nie rozumiem tylko tego,w jaki sposób to przesuwa, ale dajmy na to, iż skrypt działa w obie strony: funkcja ord zamienia znak (chyba że jestem niedoinformowany) na kod ASCII. +3 oznacza przesunięcie tego kodu o 3 miejsca do przodu. Funkcja chr zamienia wartość liczbową znaku ASCII na znak literowy. To wytłumaczenie dla osób,które nie wiedzą :) BTW Sprawdziłeś czy działa? Jeżeli tak to wynikiem powinien być ciąg Gduld (jeżeli dobrze liczę :P ). Użytkownik andrzej_aa edytował ten post 15 październik 2007, 12:43 Ok :P Już w miarę kapuję. Ale nadal nie rozumiem o co chodzi z tyn e... Jak będzie wysyłany do funkcji? Co to da? Oraz... o co chodzi z tą zmienną $1?? chr(ord(\'$1\')+1) Widzę, że ten $1 rozbija kolejno litery: chr(ord('D')+1)chr(ord('a')+1)chr(ord('r')+1)chr(ord('i' )+1)chr(ord('a')+1) Ale jakim cudem akurat zmienna $1 to rozbija? A dlaczego np. $2 już nie rozwala wyrazów? // pełny kod: $x='Daria'; $y=preg_replace('/(.)/e', 'chr(ord(\'$1\')+1)', $x); $z=preg_replace('/(.)/e', 'chr(ord(\'$1\')-1)', $y); echo 'Przed szyfrowaniem: '.$x.'<br>Po szyfrowaniu: '.$y.'<br>Po odszyfrowaniu: '.$z; Użytkownik sauron edytował ten post 15 październik 2007, 13:51 Ach,nie zauważyłem :) Dobra,czegoś się nauczyłem i tłumaczę nauczycielowi :D Tutaj jest opis preg_replace jeżeli jeszcze nie zajrzałeś. Szukałem jeszcze przełączników do pregów,ale nie mogę znaleźć . . . Do rzeczy. $1 oznacza rozbicie znalezionej frazy do tablicy - dlatego działają funkcje,które używasz. Jest jeszcze zapis \1,który zawiera w sobie string,ale to nie ta bajka. Dlaczego $1, a nie $2? Wytłumaczenie jest proste - cześć to odwołanie do danego szukanego ciągu. Mianowicie: w pierwszym argumencie funkcji preg_replace masz zapis (.), a to jest fraza szukana (zwracana będzie zawartość nawiasu, czyli dowolny znak poza znakiem nowej linii). Rozszerzając gdybyś miał poddać np. testujemy funkcje i wykorzystał zapis (.)[ ](.) w pierwszym argumencie funkcji to w drugim argumencie już byś mógł użyć $2 - bo są dwa nawiasy. Wiem,nie mam daru do tłumaczenia,ale jeżeli nie rozumiesz to zajrzyj do manuala. Użytkownik andrzej_aa edytował ten post 15 październik 2007, 18:34 |
|||
Sitedesign by AltusUmbrae. |