Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kryptografia.... własne rozwiązania
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
eai
Witam.

Czy ktoś interesował się kryptografią i pisaniem własnych metod kryptoanalizy i kryptologii (odkowanie/kodowanie) w php?

Szukam materiałów na temat sposobu budowy kodera/dekodera według własnego klucza.
Może ktoś z was już coś takiego napisał i podzieli się rozwiązaniami.

Nie szukam gotowych skryptów (bo jest ich masa np. w phpclasses.org) tylko chciałbym stworzyć własny.

Zapraszam do dyskusji.
Turgon
W mojej opinie jest stworzyć klucz o prostej strukturze. W którym każda kolejny znak symbolizuje kolejne litery, cyfry i znaki. Potem to rozdzielasz i na podstawie tego odkodowywujesz i zakodowywujesz. Tj. weług mnie najprostszy sposób.
eai
Ja myślałem nad czymś innym np dwie pierwsze litery odpowiadaja dwum cyfrom od 0-9 np jesli pierwsza litera odpowiada cyfrze 2 to przesuwamy kazda litere i cyfre o ilosc znakow ktora stanowi druga litera (cyfra 0-9) itp... Kolejne znaki w kluczu to np zamiana znaku 1 w stringu na znak 2 ktory stoi obok 1 znaku itd....

Kto ma jeszcze jakies ciekawe pomysly?
siemakuba
Pamiętam kiedy byłem baaardzo mały, był w telewizji serial. Nie pamiętam ani tytułu, ani fabuły, w zasadzie nic oprócz jednego fragmentu. Otóż, jeden pan przesyłał do drugiego zakodowaną wiadomość, i pan otrzymujący musial najpierw odgadnąć sposób kodowania a następnie odkodować wiadomość aby ją odczytać. Do reczy, spsób kodowania był taki:
  • alfabet Morse'a składa się jak wiadomo ze znaków "_" i "."
  • litera C np. wygląda tak: _ . _ .
  • zakodowana 'serialowy' sposób litera C wyglądała tak:TIFA
na czym to polega: popatrzmy na górne krawędzie liter. Gdybyśmy zakryli je i pozostawili tylko krawędź o grubości górnej kreski z litery T, została by nam linia tworząca _ (T) . (I) _ (F) . (A). Cała "sprytność" polega na tym, że daną literę można w ten sposób zapisać różnymi kombinacjami. Wracając do naszeg "C" może to być: TIFA, TJEL, EAEA, EITJ itp.

Dodatkowo, do podstawień za kropki i kreski używamy tylko liter, więc spacje mogą być zakodowane jako cyfry, może byc jedna, może być klilka, bo zawsze wiadomo że zbitka cyfr odpowiada spacji.


Kiedyś napisałem mini klasę realizująca kodowanie / dekodowanie w taki właśnie sposób.
Jeżeli uda mi się odneleźć gdzieś na PC w domu to wrzucę :)

pozdr.
php programmer
Ja pisałem prace mgr na temat szyfrów blokowych takich jak DES,

myślę że dość łatwą metodą było by coś takiego,
masz, tekst do zakodowania, masz klucz (hasło skaldające się z kilku znaków),
no i na tekscie, który chcesz zakodować, wykonujesz,
operacje bitowe (takie jak np XOR) z wykorzystaniem bitów z klucza,
proste i skuteczne zarazem
intol
Dodam tylko, że jeżeli potrafisz utrzymać klucz w tajemnicy, to kodowanie XOR za pomocą odpowiednio długiego klucza jest najlepszą metodą, jaką w obecnej chwili udało się wymyślić.
eai
Jesli kogos to zainteresuje: http://www.webfaq.pl/artykuly.php/5/0/2/O%...20nie%20tylko...
gszesiek
kurcze, jak mi się podoba ta książka hakerskie łamigłówki
(jest w czytelni PWR winksmiley.jpg )
jestem całkiem początkujący w tych sprawach i takim polecam książkę
My4tic
Cytat(eai @ 20.10.2006, 12:16:39 ) *
Szukam materiałów na temat sposobu budowy kodera/dekodera według własnego klucza.
Może ktoś z was już coś takiego napisał i podzieli się rozwiązaniami.


Jeśli chcesz pisać coś swojego musisz być dość ostrożny i zdecydowanie odradzam używanie wyłącznie własnej implementacji. Takie postępowanie jest bardzo ryzykowne. Często wiele algorytmów jest bardzo trudnych do 'złamania' ale dzięki błędom w implementacji udaje je się stosunkowo szybko łamać - szybciej niż wynika z teoretycznych założeń. Żeby dobrze coś napisać trzeba dobrze poznac dany algorytm co czasami nie jest łatwe - dlatego własne procedury mogą być tylko dodatkiem do istniejących rozwiązań - no chyba, że jesteś jakimś genialnym matematykiem i programistą smile.gif Sam używam XORowania + kilka własnych pomysłów ale na końcu i tak wszystko mieszam SHA1. Temat jest ciekawy i można się pobawić ale w komercyjnych rozwiązaniach raczej bym nie ryzykował wyłącznie własną implementacją.
060156
Czesc ..
Mozna uzywac encryption funkcji z php,
lub tutaj masz prosty na enkrypcje przyklad:
  1. <?php
  2. function decrypt($string) {
  3. $result="";
  4. $key = ENCRYPT_KEY;
  5. $lkey = strlen($key)-1;
  6. $string = base64_decode($string);
  7. $result = '';
  8. for($i=1; $i<=strlen($string); $i++) {
  9.  $char = $string[$i-1];
  10.  $keychar = $key[$i % $lkey];
  11.  $char = chr(ord($char)-ord($keychar));
  12.  $result.=$char;
  13. }
  14. return $result;
  15.  }
  16.  
  17.  function encrypt($string) {
  18. $result = '';
  19. $key = ENCRYPT_KEY;
  20. $lkey = strlen($key)-1;
  21. for($i=1; $i<=strlen($string); $i++) {
  22.  $char = $string[$i-1];
  23.  $keychar = $key[$i % $lkey];
  24.  $char = chr(ord($char)+ord($keychar));
  25.  $result.=$char;
  26. }
  27. return base64_encode($result);
  28. }
  29. ?>


pozdrawiam ..
My4tic
...no i właśnie podałeś przykład do tego o czym pisałem wcześniej. Wygląda to jak zlepek kodu znalezionego w necie. Base64 używane jest raczej podczas przesyłania maili przez starsze systemy pocztowe obsługujące 7-bitowe kody ASCII. W dlaszej części wydaje mi się, że możesz miec problem z przechowaniem rezultatu działania tego kodu:

  1. <?php
  2. $keychar = $key[$i % $lkey];
  3. $char = chr(ord($char)-ord($keychar));
  4. ?>


...w bazie danych czy pliku bo możesz dostac 'niestandardowe' znaki ASCII - kodu nie sprawdzałem - tak mi sie tylko wydaje smile.gif
060156
Polecam,
sprawdz, uzywam ten kod od 2 lat do przesylania rowniez
UTF-8 i nie wystapila zaden problem.
A z bas64 to sie calkowicie mylisz ...
Czasami to co sie wydaje nie jest prawdziwe ...
pozdrawiam ..
My4tic
Cytat(60156 @ 4.11.2006, 11:49:08 ) *
A z bas64 to sie calkowicie mylisz ...


...a możesz podać jakiś argument? Całkiem możliwe, że się myle ale FAKT jest taki, że base64 używane było głownie to przesyłania załączników poczty i do uwierzytelniania w SMTP co wynikało z ograniczeń serwerów SMTP. Hasło zakodowane w base64 dla współczesnych komputerów nie jest wielkim problemem i jest trywialne do zdekodowania więc moim zdaniem używanie tego algorytmu do kodowania haseł w aplikacjach webowych nie przyniesie dobrego rezultatu. Z drugiej strony nie mówię, że base64 musi być używane zgodnie z jego pierwotnym przeznaczeniem - to Twoja decyzja - Twoje ryzyko smile.gif

Jeśli chodzi o to...

Cytat(60156 @ 4.11.2006, 11:49:08 ) *
Polecam,
sprawdz, uzywam ten kod od 2 lat do przesylania rowniez
UTF-8 i nie wystapila zaden problem.


...to problem o ktorym pisałem występuje podczas np. XORowania. XORując jakieś znaki z powiedzmy przedzialu [21]-[7D] (HEX) można na wyjsciu dostać jakiś znak z poza tego przedzialu... albo np. " ' ".
060156
No wlasnie,
zalaczona medota enkrypcji w polaczeniu z base64
zapewnia ze pojawiajace sie znaki sa wlasciwe.
Nie uwzywam base64 tylko do enkrypcji a wlasciwie
do zapisania zakodowanego ciagu znakow..
A problem ', latwo sie rozwiazuje przez support functions
z mysql ..
pozdrawiam ..
darektbg
Witam !
A może tak kryptografia asymetryczna po obu stronach ?

Pozdrawiam
Darektbg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.