Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosty algorytm szyfrujący kluczem, bez użycia mcrypt
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat
potrzbuje czegoś prostego aby zapobiegać modyfikacjom konfiguracji zapisanej w pliku

Sprawdzenie md5checksum pliku konfiguracyjnego.
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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

Co do samego pytania - sprawdzaj sumę kontrolną.
Go to the top of the page
+Quote Post
kiler129
post
Post #4





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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?
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Wookieb... A czemu koniecznie dwustronny? (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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? (IMG:style_emoticons/default/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ę.
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(thek @ 24.05.2011, 12:37:52 ) *
Wookieb... A czemu koniecznie dwustronny? (IMG:style_emoticons/default/wink.gif)

Ej naprawdę? Ej a może przeczytasz poprzednie posty? Ej ale znowu się rozpisujesz (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
yevaud
post
Post #8





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


koledze chyba raczej chodzi nie tyle o sprawdzanie czy sie zmienil, co o to zeby sie nie zmienial (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif) mozesz xorowac jakims dluzszym kluczem zeby "szyfr" nie padal juz przy pierwszej analizie czestosci liter
Go to the top of the page
+Quote Post
kiler129
post
Post #9





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
thek
post
Post #10





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Cytat(wookieb @ 24.05.2011, 12:40:47 ) *
Ej naprawdę? Ej a może przeczytasz poprzednie posty? Ej ale znowu się rozpisujesz (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
everth
post
Post #11





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
thek
post
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A jeśli już myślimy o prostych szyfrach dwustronnych, to może szyfr Vinegere'a?
Go to the top of the page
+Quote Post
kiler129
post
Post #13





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


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ć).
Go to the top of the page
+Quote Post
CuteOne
post
Post #14





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Cytat
ktoś pomyślał, ze sobie hasło zmieni

"ktoś"? (IMG:style_emoticons/default/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 :]

Ten post edytował CuteOne 25.05.2011, 01:17:56
Go to the top of the page
+Quote Post
kiler129
post
Post #15





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

Ostrzeżenie: (0%)
-----


Cytat(CuteOne @ 25.05.2011, 02:16:46 ) *
"ktoś"? (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:12