Proste szyfrowanie

6 06 2010

Dawno już nie pisałem i z całą pewnością wyszedłem już z wprawy. Od czasu ostatniego mojego wpisu miałem mnóstwo tematów i pomysłów do blogowania jednak mimo wszystko nie znalazłem na to ani chwili czasu.

Całkiem niedawno stanąłem przed małym problemem natury raczej algorytmicznej. W czasach kiedy kradzież contentu jest coraz bardziej powszechna, a ludzie czynią to bez krzty sumienia dostałem do pracy małą modyfikacje.
Z baza danych pewnego serwisu, o którym pisać tu nie mam zamiaru wczytywane były rekordy według pewnego wzorca:

domena.pl/index.php?id=231

Aby uniknąć parserowego pobierania zawartości miałem między innymi zmodyfikować sposób prezentowania linków. Czyli szybka transformacja do:

domena.pl/gVw8zQ.

W podobny sposób prezentowane są linki w tak popularnym serwisie jak YouTube.com czy w niektórych miejscach portalu o grach komputerowych. W swoim artykule zajmę się ostania część adresu, która charakteryzuje się niepowtarzalnością i ma być moim kluczem według którego wpisy będą pobierane z bazy. Do rzeczy!

Dla ustalenia uwagi mam takie oto id: 1823042. Chcę je w jakiś w miarę logiczny sposób przekształcić do postaci jakiegoś string’a. Stworzyłem sobie tablicę cyfr oraz odpowiadającą im tablicę liter.

$cyfra = array(0=>'akwGR0', 'blxHS1', 'cmyIT2', 'dnzJU3', 'eoAKW4', 'fpBLX5', 'grCMY6', 'hsDNZ7', 'itEOx8', 'juFPy9');

Gdybym przyjął, że cyfra 1 to litera C, 5 – g, 8 – m itd. to gdyby ktoś dotarł do mojego algorytmu w łatwy sposób uczyniłby moją pracę bezcelową. Przy założeniu (w moim przypadku), że liczba jest 7 cyfrowa mamy: Każda cyfra ma 6 odpowiedników literowych. Czyli właściwie liczba 1823042 może być zakodowana na [C_{6}^{1}]^7 sposobów = 6*6*6*6*6*6*6. Aż strach to nawet liczyć!

Prostą pętelką while podzielę dużą liczbę na pojedyncze cyfry. Wykorzystam tutaj odpowiedniki DIV i MOD znane choćby z DELPHI.


while($liczba>0)
{
$reszta=$liczba%10;
$code.=$cyfra[$reszta][rand(0,5)];

$liczba=($liczba-$reszta)/10;
}

Część z moich wykładowców rzekłaby: „Hohoho! A gdzie tabelka egzekucji!”. Przedstawię więc ją tutaj dość schematycznie:


START
code:='';
$liczba:=3211;
1 – $cyfra[1][rand(0,5)] //wylosowałem liczbę 3.
$cyfra[1][3]=’H';
code:=’H';
$liczba := (3211-1)/10=321
1 – $cyfra[1][rand(0,5)] //wylosowałem liczbę 1.
$cyfra[1][1]=’l';
code:=’Hl’
$liczba:=(321-1)/10=32
2 – $cyfra[2][rand(0,5)] //wylosowałem liczbę 5.
$cyfra[2][5]=’2′;
$code:=’Hl2′
$liczba:=(32-2)/10=3
3 – $cyfra[3][rand(0,5)] //wylosowałem liczbę 2.
$cyfra[3][2]=’z';
$code:=’Hl2z’;
$liczba:= (3-3)/10=0
return $code //Hl2z
KONIEC

Jak widać w naszym generatorze wykorzystaliśmy rozróżnienie wielkości liter. ‘A’!=’a’. Aby zneutralizować to przeoczenie gdybyśmy korzystali z bazy danych wykorzystamy kodowanie znaków z rozszerzeniem “_cs” (z ang. skrótu od Case Sensitive). Uwaga! Kodowanie UTF nie jest niestety w nie wyposażone (jest jedynie „_ci” -„Case Insensitive”). W tym wypadku w naszym zapytaniu SELECT dopisujemy BINARY.

$baza->query("SELECT [fields] FROM [table] WHERE id= BINARY '".$code."' LIMIT 0,1");

Przykład zastosowania prostego generatora przedstawiam tutaj.



Przyjaźniejsze hiperłącza

5 07 2008

Całkiem dość dawno zauważyłem przy odnośnikach malutkie ikonki. pdfmp3 Jednak dopiero dziś zastanowiło mnie jak coś takiego uczynić. Oszukałem się w sumie trochę… i zasięgnąć musiałem troche nowej literatury.

Na początek…


<a href="#moja_muzyka.mp3“>utwór.mp3</a>

Aby mile zaacentować obecność URLa który bezpośrednio prowadzi do dźwięku mp3 tworzymy regułę css, która sprawdza czy nasz URL kończy się z rozszerzeniem .mp3.

a[href$='.mp3']{
background: url('winamp_icon.gif') no-repeat center right;
padding-right: 16px;
}

A zapytacie pewnie jak zaznaczyć ze wpisany adres jest mailem… Tutaj posłużę się inną regułą, która sprawdzi czy nasz adres URL rozpoczyna się od mailto:

<a href="mailto:adres@mailowy.pl”>adres</a>


a[href^='mailto:']{
background: url('email.gif') no-repeat center right;
padding-right: 16px;
}

Tak oto możemy tworzyć samemu mnóstwo reguł do plików *.exe, *.doc czy też *.xls których celem jest uczynienie naszej strony przyjaźniejszą!

Efekt końcowy można zobaczyć »tutaj«



Prawko zdane :)

4 07 2008

Seria niepowodzeń w WORDzie… najpierw 17 kwietnia egzamin teoretyczny zdany, praktyczny- oblany… :( Błąd dość głupi, przekroczenie prędkości.

Następne podejście 27 maja skończyło się na mojąniekorzyść. Wynik egzaminu negatywny, a błąd równie głupi, bo już na łuku, tak więć nawet na miasto sobie nie wyjechałem.

Jak to mówią do 3 razy sztuka… 26 czerwca o 7:15 egzamin. Wcześniej od 600-700 jeszcze jazdy doszkalające. Każda minuta coraz bardziej stresująca, dopiero uspokoiłem się kiedy usłyszałęm swoje imie i nazwisko.

Pan Grzegorz Dziubiński zapraszam do pojazdu numer 21

Egzaminator bardzo miły i jazda była dla mnie czystąprzyjemnością. Całe 35min przebiegło praktycznie bez żadnej pomyłki. A kilka ostatnich minut, ostatnie kilometry najbardziej mnie stresowały i poczyniłem kilka małych niedociągnięć. Jednak wynik egzaminu pozytywny!

Praktycznie codziennie śledziłem postępy wytwarzania mojego prawa jazdy na stronie Polskiej Wytwórni Papierów Wartościowych. I włąśnie dziś moim oczom ukazał się komunikat:

(2008-06-30) Prawo Jazdy: przyjęto wniosek, trwa postępowanie administracyjne.
(2008-07-03) Prawo Jazdy do odbioru w Urzędzie.

Niestety z powodu urzędu czynnego tylko do piątku do godziny 14:30 mój plastik odbiorę dopiero w poniedziałek. ;/



CSS goły dzień

4 04 2008

Dnia 05 kwietnia obchodzimy w Polsce CSS Goły Dzień. Tego dnia rozbieramy strony z ich graficznych ubrań.

CSS GOŁY DZIEŃ 2008 ma na celu promocję czystego, zgodnego ze standardami, kodu stron internetowych. Akcja polega na wyłączeniu (na jeden dzień) arkuszy stylów przypisanych do strony, co uwidacznia czysty kod. Jeśli jest to kod poprawnie skonstruowany strona pozostaje czytelna, pokazując wszystkim, że warstwa graficzna nie jest jedynym elementem funkcjonalnej i przyjaznej strony internetowej.

Promujemy w ten sposób standardy W3C według których powinny być produkowane serwisy WWW. Zapewnia to maksymalną ich przystępność w wielu obszarach. Dbamy, aby serwisy były poprawnie czytane przez programy dla osób niewidomych, roboty wyszukiwarek (np: Google, Onet), a także przez wszystkie najważniesze przeglądarki internetowych.



wrzuta.pl

21 12 2007

Ostatnio ponownie wróciłem do zainteresowania mojego, mało rowiniętego… php. Zastanawiało mnie bowiem, w jaki sposób stworzone są programy (których pełno) do pobierania utworów z serwisu wrzuta.pl. Nigdzie jednak nie był przedstawiony algorytm działania programu. Oto moja propozycja:

Najpierw prosty formularz do wklejania linku:


<form action="plik.php” method=”get“>   
      URL:<input name=’link’ type=”text” />
      <input type=”submit” value=”Pobierz” />
</form>

Czytaj dalej »



Witam

18 12 2007

eH taka przerwa, sam już nie wiem co mam pisać.
Po krótce opiszę co się zmieniło.

  • Po pierwsze to właśnie przeżywamy gorączke świąt, a także gorączke lenistwa jakim jest chodzenie do szkoły i męczenie się w tych codzień tych samych ścianach. Jak już wcześniej chyba mówiłem nacisk w tym semestrze położyłem na angielski i przede wszsytkim matme. Sądzę żę to była na prawdę dobra decyzja.
  • W kwestii pozaszkolnej to oprócz codziennego przeglądania stron www nie znajduję już czasu na zainteresowania jakim jest m.in. xHTML & CSS. Zajmuję sie juz tym w mniejszym stopniu.

Do końca tygodnia zostało kilka dni, życzę wiec wytrwałości i
WSZYSTKIEGO NAJLEPSZEGO NA ŚWIĘTA.
P.S. Przed końcem roku jeszcze coś napiszę czysto technicznego jeśli starczy mi sił :)