Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Szyfrowanie hasłem, jaka funkcja?
timon27
post 13.12.2011, 15:09:06
Post #1





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Witam. Czy istnieje w php jakaś funkcja szyfrująca stringi?
Chodzi mi o funkcję szyfrującą hasłem.
Szukam takiej, która nie wymaga dodatkowych klas,
oraz takiej, która używa silnego algorytmu,
czyli niemożliwej do złamania metodą inną niż brutal force.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
qrooel
post 13.12.2011, 15:10:29
Post #2





Grupa: Zarejestrowani
Postów: 306
Pomógł: 42
Dołączył: 25.03.2010
Skąd: Kraków

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


Sha1 + salt.

Szyfrowanie sha1 jest procesem teoretycznie nieodwracalnym przy odpowiedniej sile hasła.

Ten post edytował qrooel 13.12.2011, 15:12:06


--------------------
Strony WWW: http://arscreo.pl
Go to the top of the page
+Quote Post
timon27
post 13.12.2011, 15:12:27
Post #3





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Szukam funkcji szyfrującej, a nie hashującej.
Samo istnienie hasła sugeruje, iż szukam funkcji, którą można odwrócić (przy znajomości hasła oczywiście).

Ten post edytował timon27 13.12.2011, 15:13:35
Go to the top of the page
+Quote Post
skowron-line
post 13.12.2011, 15:37:05
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


http://www.php.net/manual/pl/book.mcrypt.php

Zobacz sobie klasę (Encrypt) z Kohany 3 z wykorzystaniem tej funkcji.

Ten post edytował skowron-line 13.12.2011, 15:38:21


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
timon27
post 14.12.2011, 08:09:15
Post #5





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


No właśnie, gdziekolwiek nie szukałem, to widziałem że ludzie wykorzystują klasy.
Niestety przy obecnym problemie klasy są niewskazane, a poza tym moim zdaniem powinna być do tego prosta funkcja.

No trudno. Myślę, że sam napiszę taka funkcję przy wykorzystaniu jakiejś funkcji hashującej.


Jakby ktoś tu trafił z googla, to podaje funkcje szyfrowania hasłem.
Bez użycia klas.
Bezpieczna - złamanie jej jest tak trudne jak zlamanie md5.
Mało lini kodu - łatwo podmienić md5 na np. sha1, czy inny obsługiwany hash, każdy może prześledzić bezpieczeństwo.
Szybka - obliczanie szyfru odbywa się w czasie liniowym, niewiele dłużej niż obliczanie hasów md5.


  1. <?
  2.  
  3. function md_kodowanie($string,$haslo){
  4. $d=16; // długość hasha md5 podzielona na dwa (litera hasha w trybie 16wym)
  5. $new_ord['0']=0;
  6. $new_ord['1']=1;
  7. $new_ord['2']=2;
  8. $new_ord['3']=3;
  9. $new_ord['4']=4;
  10. $new_ord['5']=5;
  11. $new_ord['6']=6;
  12. $new_ord['7']=7;
  13. $new_ord['8']=8;
  14. $new_ord['9']=9;
  15. $new_ord['a']=10;
  16. $new_ord['b']=11;
  17. $new_ord['c']=12;
  18. $new_ord['d']=13;
  19. $new_ord['e']=14;
  20. $new_ord['f']=15;
  21.  
  22. $mgla=$haslo;
  23. foreach(str_split($string,$d) as $blok){
  24. $mgla=md5($mgla);
  25. $blok_wynik='';
  26. for($i=0;$i<$d;$i++){
  27. $litera_wejscia=substr($blok,$i,1);
  28. $litera_wejscia=ord($litera_wejscia);
  29. $litera1_mgly=substr($mgla,$i*2,1);
  30. $litera2_mgly=substr($mgla,$i*2+1,1);
  31. $litera_mgly=$new_ord[$litera1_mgly]*16+$new_ord[$litera2_mgly];
  32. $litera_wyniku=$litera_wejscia+$litera_mgly; //tu dodajemy
  33. if($litera_wyniku>255) $litera_wyniku=$litera_wyniku-256;
  34. $blok_wynik.=chr($litera_wyniku);
  35. }
  36. $wynik.=$blok_wynik;
  37. }
  38. return(base64_encode($wynik));
  39.  
  40. }
  41.  
  42.  
  43.  
  44. function md_dekodowanie($string,$haslo){
  45. $d=16;
  46. $string=base64_decode($string);
  47. $new_ord['0']=0;
  48. $new_ord['1']=1;
  49. $new_ord['2']=2;
  50. $new_ord['3']=3;
  51. $new_ord['4']=4;
  52. $new_ord['5']=5;
  53. $new_ord['6']=6;
  54. $new_ord['7']=7;
  55. $new_ord['8']=8;
  56. $new_ord['9']=9;
  57. $new_ord['a']=10;
  58. $new_ord['b']=11;
  59. $new_ord['c']=12;
  60. $new_ord['d']=13;
  61. $new_ord['e']=14;
  62. $new_ord['f']=15;
  63.  
  64. $mgla=$haslo;
  65. foreach(str_split($string,$d) as $blok){
  66. $mgla=md5($mgla);
  67. $blok_wynik='';
  68. for($i=0;$i<$d;$i++){
  69. $litera_wejscia=substr($blok,$i,1);
  70. $litera_wejscia=ord($litera_wejscia);
  71. $litera1_mgly=substr($mgla,$i*2,1);
  72. $litera2_mgly=substr($mgla,$i*2+1,1);
  73. $litera_mgly=$new_ord[$litera1_mgly]*16+$new_ord[$litera2_mgly];
  74. $litera_wyniku=$litera_wejscia-$litera_mgly; //teraz odejmujemy
  75. if($litera_wyniku<255) $litera_wyniku=$litera_wyniku+256;
  76. $blok_wynik.=chr($litera_wyniku);
  77. }
  78. $wynik.=$blok_wynik;
  79. }
  80. return($wynik);
  81. }
  82.  
  83.  
  84. echo md_kodowanie('Dane do zakodowania','Twoje tajne hasło!');
  85. echo '<br>';
  86. echo md_dekodowanie('U7lSOoQmjf1ikWwZscgyYu9lYNDD6f44+iBK3rL1PGM=','Twoje tajne hasło!');
  87. echo '<br>';
  88. ?>end.
Go to the top of the page
+Quote Post
nospor
post 14.12.2011, 08:36:54
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Bezpieczna - złamanie jej jest tak trudne jak zlamanie md5.
md5 można "złamać" obecnie w 10 sekund wink.gif

Cytat
Bez użycia klas.
Dziwne masz podejście... napisałeś dwie funkcje i już jesteś uradowany że nie użyłeś klas.... te dwie funkcje można zapisać jako klasę, tak samo jak prostą klasę można bez problemu zapisać jako funkcje.
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
timon27
post 14.12.2011, 08:56:44
Post #7





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Cytat
md5 można "złamać" obecnie w 10 sekund

Podaj proszę jakieś narzędzie, którym mogę złamać md5 w 10s (tylko nie hasła 3literowego).
Nie. Kolizja nie wystarcza do złamania szyfru.
Poza tym jak mówiłem, można użyć jakiegokolwiek innego hasha. W stosownym miejscu podmieniasz tylko md5, oraz modyfikujesz wartość $d.

Cytat
prostą klasę

No właśnie mcrypt chyba nie jest prostą klasą

Ten post edytował timon27 14.12.2011, 09:01:02
Go to the top of the page
+Quote Post
nospor
post 14.12.2011, 09:07:26
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




md5 było dobre 20 lat temu. Teraz trzymając hasła w md5 jest niemalże równoważne z trzymaniem ich w jawnej postaci. Odnośnie md5 masz napisane sporo tu:
http://forum.php.pl/index.php?showtopic=44...t=0&start=0

Cytat
No właśnie mcrypt chyba nie jest prostą klasą
przecież w php mcrypt używasz jako wywołanie funkcji, nie musisz się bawić w jakieś klasy.
Nadal nie kumam co ci przeszkadzają klasy skoro i tak używasz funkcji. No ale mniejsza o to. Twoja sprawa.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 23:35