Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Prosty algorytm szyfrujący kluczem
Forum PHP.pl > Forum > PHP
kiler129
Witjacie!
Czy ktoś z was zna/posiada w swoich zbiorach lub mógłby podrzucić samą ideę szyfrowania tekstu (robię serialize na tablicy) w prosty sposób bez użycia biblioteki mcrypt?
Widziałem temat Temat: Algorytm AES bez uzycia mcrypt ale dla mnie to przerost formy nad treścią - potrzbuje czegoś prostego aby zapobiegać modyfikacjom konfiguracji zapisanej w pliku.
wookieb
Cytat
potrzbuje czegoś prostego aby zapobiegać modyfikacjom konfiguracji zapisanej w pliku

Sprawdzenie md5checksum pliku konfiguracyjnego.
webdice
Myślisz że algorytmy szyfrujące/hashujące mają po pięć linijek? Nie ma prostego rozwiązania.

Co do samego pytania - sprawdzaj sumę kontrolną.
kiler129
Ale co mi z sumy kontrolnej? Gdzie ją zapiszę ... w pliku konfiguracyjnym? ;]
Zdaje sobie sprawę, że algorytmy nie mają po 5-6 linijek ale nie potrzbuje 200 linijkowego kloca gdy demon ma niecale 500.
wookieb
Skoro nie chcesz mcrypta, nie chcesz gotowego algorytmu na 200 linijek to napisz własny skoro nic nie chcesz.
Poza tym jak chcesz w końcu kontrolować czy plik konfiguracyjny się nie zmienił używając algorytmu dwukierunkowego?
thek
Wookieb... A czemu koniecznie dwustronny? wink.gif Hash oryginału gdzieś zapisany a potem "tylko" w razie konieczności zrobić hash sprawdzanego i porównywać. Wystarczy jedna głupia literka inna i hash z automatu będzie inny. A chyba chodzi tylko o sprawdzenie Zmienił się? Tak/Nie smile.gif Do tego zwykły hash styknie i wcale dwustronne kodowanie nie jest potrzebne. Byłoby jedynie gdyby chciał odtworzyć oryginalną strukturę wewnętrzną pliku, ale... czy to już nie podchodzi pod system kontroli wersji? smile.gif Z hashem sprawdzenie true/false zajmie mu kilka linijek i nie będzie musiał do tego ruszać wcale kolosów strasznie obciążających aplikację.
wookieb
Cytat(thek @ 24.05.2011, 12:37:52 ) *
Wookieb... A czemu koniecznie dwustronny? wink.gif

Ej naprawdę? Ej a może przeczytasz poprzednie posty? Ej ale znowu się rozpisujesz sad.gif
yevaud
koledze chyba raczej chodzi nie tyle o sprawdzanie czy sie zmienil, co o to zeby sie nie zmienial smile.gif
moze zaszyfowac plik jakims kluczem i myslec ze skoro zaszyfrowane to nikt tego nei modyfikowal.

ze sposobu w jaki kolega podchodzi do problemu, wnosze ze zaawansowany algorytm zwany xorowaniem bedzie rozwiazaniem wink.gif mozesz xorowac jakims dluzszym kluczem zeby "szyfr" nie padal juz przy pierwszej analizie czestosci liter
kiler129
Po googlowaniu głębszym znalazłem taki algorytm:

  1. <?php
  2. function crypto($str, $ky=''){
  3. if(empty($ky)) $ky = SERVER_HASH; //Use default
  4. $ky = str_replace(chr(32), '', $ky); //Remove spaces
  5. if(strlen($ky) < 8) $ky = $ky.str_repeat("0", (8-strlen($ky))); //If key length is less than 8 add 0`s
  6. $kl = (strlen($ky) < 32) ? strlen($ky) : 32;
  7. $k = array();
  8. for($i=0; $i<$kl; $i++) {
  9. $k[$i] = ord($ky{$i})&0x1F;
  10. }
  11.  
  12. $j=0;
  13. for($i=0; $i<strlen($str); $i++) {
  14. $e = ord($str{$i});
  15. $str{$i} = ($e&0xE0) ? chr($e^$k[$j]) : chr($e);
  16. $j++;
  17. $j= ($j==$kl) ? 0 : $j;
  18. }
  19.  
  20. return $str;
  21. }


Szyfrowanie/deszyfrowanie tą samą funkcją - to mi w zupełności wystarcza. Bardziej tu chodzi o zaciemnienie pliku niż jego ochronę - jak ktoś zmieni to będzie kuku - jak będzie jakkolwiek zaszyfrowany to 99% się podda smile.gif
thek
Cytat(wookieb @ 24.05.2011, 12:40:47 ) *
Ej naprawdę? Ej a może przeczytasz poprzednie posty? Ej ale znowu się rozpisujesz sad.gif

Wiesz... Ja myślałem już bardziej o "prewencji".
1. Skrypt sprawdza hash pliku i jeśli się zgadza to ok.
2. Jeśli się nie zgadza, przywróć "kopię zapasową" konfiguracji.
Innymi słowy jeśli ktoś grzebie w konfigu to i tak skrypt to zignoruje i użyje kopii zapasowej konfiguracji, a tym samym nawet udana zmiana konfigu nic nie daje. Istniałby bowiem dodatkowy mechanizm zabezpieczający, który wykrywałby wszelkie zmiany i je negował. Włamywacz cieszyłby się ze zmian krótko - do czasu odświeżenia strony. Nie musiałby wiedzieć bowiem o zewnętrznym mechanizmie kontroli. Nie musiałby to być koniecznie hash. Równie dobrze crc mogło by to być. Kwestia wyboru. Może nie byłoby to optymalne ale skoro decyduje się i tak na kontrolę tego w skrypcie to najlepiej by było, gdyby sprawdził kilka rozwiązań i porównał potem pod kątem wydajności.
everth
Z tym CRC to trochę przesadzasz. MD5 w zupełności wystarczy.

PS: Kurde zmień tego avatara bo cały czas mi się zdawało że gadam do Spawna, stary był lepszy wink.gif
thek
A jeśli już myślimy o prostych szyfrach dwustronnych, to może szyfr Vinegere'a?
kiler129
Cytat(thek @ 24.05.2011, 21:49:33 ) *
A jeśli już myślimy o prostych szyfrach dwustronnych, to może szyfr Vinegere'a?

Zakręcę się wokół tego.
Generalnie kod który rozwijam to demon działający na serwerze. Jedyne dane jakie ma trzyma w pamięci ram, główne jednak ustawienia zapisuje sobie w pliku i chciałbym aby w miarę możliwości nikt nie modyfikował tych danych bo kod komunikuje się również z drugim serwerem i chcę uniknąć sytuacji gdy jeden serwer z drugim nie może się dogadać bo np. ktoś pomyślał, ze sobie hasło zmieni.
Dlatego właśnie nie użyłem żadnej sumy kontrolnej - zwyczajnie nie mam gdzie jej zapisać (bo zapisanie jej obok w pliku jest ekhem... głupie - można przecież sobie zmienić).
CuteOne
Cytat
ktoś pomyślał, ze sobie hasło zmieni

"ktoś"? smile.gif wrzuć plik do folderu poza drzewem www, nadaj mu odpowiednie prawa [tylko root, może go widzieć/modyfikować] i problem z głowy :]
kiler129
Cytat(CuteOne @ 25.05.2011, 02:16:46 ) *
"ktoś"? smile.gif wrzuć plik do folderu poza drzewem www, nadaj mu odpowiednie prawa [tylko root, może go widzieć/modyfikować] i problem z głowy :]


Niestety sprawa wygląda tak, że adminuje kilkoma serwerami i nie mam czasu zwyczajnie śledzić wszytkiego dokładnie - wole aby automat zdawał mi raporty przy czym osoba w danej firmie też ma hasło roota - jedyny więc sposób na grzebanie to obfuscated code (jak to będzie po polsku? ;]) + zaszyfrowany plik konfiguracyjny. I mam w zasadzie pewność, że nikt nie ruszy - bo jak ruszy to się nie odpali i tyle smile.gif
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.