login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Is dit veilig?

Offline Raze - 29/04/2009 10:35
Avatar van RazePHP beginner Ik ben bezig geweest met een functie om een paswoord te versleutelen. Zomaar om wat te proberen eigenlijk, en dit is het resultaat:

  1. <?php
  2.  
  3. function hasher($inserted_value){
  4.  
  5.  
  6. $length = strlen($inserted_value);
  7. $arr = str_split($inserted_value);
  8.  
  9.  
  10. for($i = 0; $i <= $length; $i++) {
  11. $ascii_sub .= ord($arr[$i]);
  12. }
  13. $ascii = substr($ascii_sub,0,-1);
  14.  
  15. $chars_used = array('$','@','#','(',')','{','}','£','€','ù');
  16.  
  17.  
  18. $var1 = $length;
  19. $var2 = count($chars_used);
  20. $var3 = $ascii;
  21.  
  22. $output = $var1 / $var2 * $var3;
  23.  
  24. $length_output = strlen($output);
  25. $arr_output = str_split($output);
  26. for($i = 0; $i <= $length_output; $i++) {
  27. $value .= $chars_used[$arr_output[$i]];
  28. }
  29. $num_value = strlen($value);
  30. for ($i = 0; $i <= 20; $i++) {
  31. $hashed_value .= $value;
  32. }
  33. $hash = substr($hashed_value,0,24);
  34. return $hash;
  35. }
  36. ?>


Het werkt, alleen geeft hij telkens een andere lengte (hoe langer de ingegeven waarde, hoe langer de output). Maar voor de rest codeert hij het wel met de tekens die in de array staan.

Nu is mijn vraag vooral: is dit veilig om te gebruiken en om dus paswoorden te versleutelen, of is dit eenvoudig te kraken? Dat het te kraken is, daar ga ik zowieso al van uit, maar toch...  

12 antwoorden

Gesponsorde links
Offline arneman - 29/04/2009 10:42
Avatar van arneman Nieuw lid het probleem is, dat wanneer je een variabele lengte hebt, je snel kan weten hoe lang het passworrd is.

Daarbuiten vind ik het toch de moeite waard om zoiets te proberen 
Offline Raze - 29/04/2009 10:50
Avatar van Raze PHP beginner het is toch denk ik moeilijk om de lengte van het paswoord te achterhalen.

hasher('1') -> een string van 16 tekens
hahser('2') -> een string van 21 tekens
hasher ('3') -> een string van 24 tekens
hasher ('google') -> een string van 20 tekens

maar het is wel mogelijk
Offline ArieMedia - 29/04/2009 11:22 (laatste wijziging 29/04/2009 11:34)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Is
  1. echo hasher('a') . hasher('b');


hetzelfde als

  1. echo hasher('ab');


Zo ja dan is het zowizo al niet veilig

Edit; Nope.. its not.

Edit2: De "o" en de "n" zijn hetzelfde: http://arie2zero.nl/test.php
Offline Wim - 29/04/2009 13:27
Avatar van Wim Crew algemeen Volgens mij ga je vrij snel dubbele waardes kunnen krijgen met je formule. Ik ga vanavond als ik thuis ben eens wat proberen...
Offline ArieMedia - 29/04/2009 13:40
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
wimmarien schreef:
Volgens mij ga je vrij snel dubbele waardes kunnen krijgen met je formule. Ik ga vanavond als ik thuis ben eens wat proberen...
ik heb op dit moment alleen de "o" en de "n" kunnen vinden die hetzelfde zijn. Voor de rest ben ik nog niet echt verder gegaan met een controle of er dubbele hashes zijn aangetroffen xD (Moest ff wat bij de bakker halen)
Offline stitjen - 29/04/2009 13:43
Avatar van stitjen Nieuw lid Maak een eenvoudig script daarvoor? (laat je pc een nachtje werken)
Offline ArieMedia - 29/04/2009 13:50
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
stitjen schreef:
Maak een eenvoudig script daarvoor? (laat je pc een nachtje werken)
Ben ook bezig met zown automatisch script.. kga niet alles met de hand controleren lol.. Moet nog even een in_array check eroverheen gooien en dan is het 99% klaar
Offline Raze - 29/04/2009 14:02
Avatar van Raze PHP beginner arie2zero:

wat je vraagt of hasher('a') hetzelfde is als hasher('ab') -> dit is niet het geval

bv hasher('11') is niet gelijk aan hasher('1') 2x achter mekaar
Offline ArieMedia - 29/04/2009 14:23
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Raze schreef:
arie2zero:

wat je vraagt of hasher('a') hetzelfde is als hasher('ab') -> dit is niet het geval

bv hasher('11') is niet gelijk aan hasher('1') 2x achter mekaar
Weet ik ;) Ben zelf ook aan het testen . Had mn post ook al ge-edit..

Ben zelf hier aan het testen: http://arie2zero.nl/test.php
Offline Raze - 29/04/2009 20:13 (laatste wijziging 29/04/2009 22:49)
Avatar van Raze PHP beginner wat ik me nu afvraag, is of het wel goed is om een paswoord om te zetten naar iets gelijk @ùù;(())@

zou het niet gewoon beter zijn om dit in cijfers te zetten?

EDIT:

ik heb het script aangepast en getest, en ik heb tot nu toe nog geen dubbele waardes gevonden.

  1. <?php
  2. function hasher($inserted_value){
  3.  
  4. $length = strlen($inserted_value);
  5. $arr = str_split($inserted_value);
  6.  
  7.  
  8.  
  9. for($i = 0; $i <= $length; $i++) {
  10.  
  11. $ascii_sub .= ord($arr[$i]);
  12. }
  13.  
  14. $ascii = substr($ascii_sub,0,-1);
  15.  
  16.  
  17. $length_ascii = strlen($ascii);
  18.  
  19.  
  20. $var1 = $ascii * $length;
  21. $var2 = 3.14159265358979323846264338327950288419716939937510;
  22. $var3 = sqrt($length);
  23. $var4 = NULL;
  24. $var5 = NULL;
  25. $var6 = NULL;
  26.  
  27. $var4 = ceil(($var1 * $var2)/$var3);
  28. $var5 = abs($var4 * ceil($var3 * $var3 * (($var2/sin($ascii))*$length_ascii)));
  29. $var_inter = substr($var5, 0, 8);
  30. $var6 = (abs(ceil($var5)/($ascii * $var3 * $length_ascii))/($ascii* ($var4 * $var3))) * $var_inter * $var5 * $var4;
  31.  
  32. $chars = array('$','@','#','(',')','{','}','£','€','ù');
  33.  
  34.  
  35. $length_var6 = strlen($var6);
  36. $arr_output = str_split($var6);
  37.  
  38. for($i = 0; $i <= $length_var6; $i++) {
  39. $value .= $chars[$arr_output[$i]];
  40. }
  41.  
  42.  
  43. return $value;
  44.  
  45. }
  46. ?>


hoe kan ik er nu voor zorgen dat de output dezelfde lengte heeft?

ik dacht eraan om te kijken hoe lang de huide output is, en indien deze bv. korter is dan 25, de output gewoon achteraan plakken totdat deze 25 tekens lang is.
dus:strlen('123456') < 25
1234561234561234561234561

daarnaast zou ik willen weten of deze veiliger is dan mijn eerste. En dan vooral: zouden jullie deze durven gebruiken op je website? (want dat ben ik bij de mijne van plan)
Offline Richard - 29/04/2009 23:22
Avatar van Richard Crew algemeen Nee, dat zou ik nooit aandurven. Algoritmes als MD5 en SHA(1|2|etc.) zijn daar juist voor bedoeld, en op zulke kleine string komen _nooit_ collisions voor. :]
Offline Raze - 29/04/2009 23:32
Avatar van Raze PHP beginner mmmh ok

dan ga ik me eerst wat meer verdiepen in algoritmes etc en eens opzoeken op internet hoe md5 en sha-... zijn opgebowd

en tot dan maar braafjes een van deze gebruiken  (en wrs ook daarna, want het zal me toch wrs niet lukken zoiets te maken  )
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.297s