kostenloser Webspace werbefrei: lima-city


Registrierung Passwort verschlüsseln.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*******x

    Hallo,:wave:

    Ich hab ein Problem ich möchte das Passwort verschlüsseln können ihr mir sagen wie man sowas macht.:wink:




    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Registration Complete</title>
    </head>
    <body>
    <?php
    include('cn.php');
    	
    $userUsername = $_POST['userUsername'];
    $userPassword = $_POST['userPassword'];
    $userPasswordConfirm = $_POST['userPasswordConfirm'];
    $userAge = $_POST['userAge'];
    $userCountry = $_POST['userCountry'];
    
    // Prevent MySQL Injections
    $userUsername = mysql_real_escape_string(stripslashes($userUsername));
    $userPassword = mysql_real_escape_string(stripslashes ($userPassword));
    $userPasswordConfirm = mysql_real_escape_string(stripslashes ($userPasswordConfirm));
    $userAge = mysql_real_escape_string(stripslashes($userAge));
    $userCountry = mysql_real_escape_string(stripslashes($userCountry));
    
    $sql = "SELECT * FROM user";
    $resultCount = mysql_query($sql, $cn) or
    	die(mysql_error($cn));
    
    $num_users = mysql_num_rows($resultCount);
    	
    $row_count = -1;
    while ($row_count < $num_users) {
    	$data = mysql_fetch_object($resultCount);
    	$row_count++;
    	
    	if ($data->user_username == $userUsername) {
    		echo '<p>The username "' . $userUsername . '" is not available.</p>';
    		$row_count = $num_users;
    	} else if ($row_count == $num_users) {
    		echo '<p>The username "' . $userUsername . '" has been selected.</p>';
    		
    		if ($userPassword != $userPasswordConfirm) {
    			echo '<p>Passwords do not match.</p>';
    			echo '<p><strong>New user has not been created.</strong></p>';
    		} else {
    			echo '<p>Passwords match.</p>';
    			
    			$userJoinDate = time();
    			
    			$sql = "INSERT INTO
    					user
    				(user_username,
    				 user_password,
    				 user_join_date,
    				 user_age,
    				 user_country)
    					VALUES
    				('" . $userUsername . "',
    				 '" . $userPassword . "',
    				 '" . $userJoinDate . "',
    				 '" . $userAge . "',
    				 '" . $userCountry . "')";
    			$result = mysql_query($sql, $cn) or
    				die(mysql_error($cn));
    			
    			echo "<p><strong>The username '" . $userUsername . "' has been created. Please login <a href='login.php'>here</a>.</strong></p>";
    		}
    	}
    }
    ?>
    </body>
    </html>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Die meistgenutzte Methode werden wohl MD5-Summen sein (habe aber nicht wirklich einen Überblick darüber). Einfach die Summe vom Passwort berechnen und speichern. Die Summen sind nicht rückrechenbar, aber trotzdem nicht unknackbar. Deswegen nimmt man auch gerne mal einen salted hash (googlen!).

    Natürlich könntest du auch einfach deine eigene Methode entwickeln oder eine andere nutzen um die Summen zu berechnen. Musst du am Ende wissen, was du nutzen willst.
  4. Autor dieses Themas

    m*******x

    wo das so richtig.:confused:
    Könnt ihr mir bitte helfen.:tongue:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Registration Complete</title>
    </head>
    <body>
    <?php
    include('cn.php');
    	
    $userUsername = $_POST['userUsername'];
    $userPassword = md5($_POST['userPassword']);
    $userPasswordConfirm = md5($_POST['userPasswordConfirm']);
    $userAge = $_POST['userAge'];
    $userCountry = $_POST['userCountry'];
    
    // Prevent MySQL Injections
    $userUsername = mysql_real_escape_string(stripslashes($userUsername));
    $userPassword = mysql_real_escape_string(stripslashes ($userPassword));
    $userPasswordConfirm = mysql_real_escape_string(stripslashes ($userPasswordConfirm));
    $userAge = mysql_real_escape_string(stripslashes($userAge));
    $userCountry = mysql_real_escape_string(stripslashes($userCountry));
    
    $sql = "SELECT * FROM user";
    $resultCount = mysql_query($sql, $cn) or
    	die(mysql_error($cn));
    
    $num_users = mysql_num_rows($resultCount);
    	
    $row_count = -1;
    while ($row_count < $num_users) {
    	$data = mysql_fetch_object($resultCount);
    	$row_count++;
    	
    	if ($data->user_username == $userUsername) {
    		echo '<p>The username "' . $userUsername . '" is not available.</p>';
    		$row_count = $num_users;
    	} else if ($row_count == $num_users) {
    		echo '<p>The username "' . $userUsername . '" has been selected.</p>';
    		
    		if ($userPassword != $userPasswordConfirm) {
    			echo '<p>Passwords do not match.</p>';
    			echo '<p><strong>New user has not been created.</strong></p>';
    		} else {
    			echo '<p>Passwords match.</p>';
    			
    			$userJoinDate = time();
    			
    			$sql = "INSERT INTO
    					user
    				(user_username,
    				 user_password,
    				 user_join_date,
    				 user_age,
    				 user_country)
    					VALUES
    				('" . $userUsername . "',
    				 '" . $userPassword . "',
    				 '" . $userJoinDate . "',
    				 '" . $userAge . "',
    				 '" . $userCountry . "')";
    			$result = mysql_query($sql, $cn) or
    				die(mysql_error($cn));
    			
    			echo "<p><strong>The username '" . $userUsername . "' has been created. Please login <a href='login.php'>here</a>.</strong></p>";
    		}
    	}
    }
    ?>
    </body>
    </html>
  5. Fertigen Code wirst du hier wohl weniger bekommen, das hilft dir nicht. Lies dich in das Thema ein, es gibt genug auf Google zu finden und implementiere es selber. Außerdem habe ich oben doch eh schon geschrieben, wo das gemacht werden muss. ;)
  6. Man könnte allerdings auch AES nehmen ;-) Ist einwenig aufwendig, doch man braucht lange um es wieder entschlüsseln zu können. Einfach mal in Google "AES PHP" suchen.
  7. arme junge! du bist hier 'gut' versorgt :)
    also es geht in etwa so (du musst dir eigens irgendein algo ausdenken!):
    <?php
    $pw0  = 'hund';
    $salt = 'lorem ipsum dolor sit amet';
    $pw1  = sha1(sha1($salt . sha1($pw0))); // hash-algo
    
    exit('blödespasswort ("hund") etwas besser verschlüsselt: ' . $pw1.
      '<hr />mein hash-algo: <pre>$pw1  = sha1(sha1("salt" . sha1("password")));</pre>' . 
      '<hr />blödespasswort blöd verschlüsselt (md5): ' . md5($pw0) .
      '<hr />blödespasswort etwas besser verschlüsselt <a href="https://www.google.at/search?as_q=01b3f59481d46ded6e6e4be8252d6bf1&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=#lr=&as_qdr=all&q=70058550bf899147eddba8c32a7a7488b5cf8939&oq=70058550bf899147eddba8c32a7a7488b5cf8939&gs_l=serp.3...2385.2385.0.2745.1.1.0.0.0.0.150.150.0j1.1.0....0...1c.1.23.serp..1.0.0.y7eRt5e5dxk&bav=on.2,or.&fp=23271df1e61efdb7&biw=1276&bih=853">finden!</a>' .
      '<hr />blödespasswort blöd verschlüsselt <a href="https://www.google.at/search?as_q=01b3f59481d46ded6e6e4be8252d6bf1&as_epq=&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=#lr=&as_qdr=all&q=06e2b745f3124f7d670f78eabaa94809&oq=06e2b745f3124f7d670f78eabaa94809&gs_l=serp.12...0.0.0.395998.0.0.0.0.0.0.0.0..0.0....0...1c..23.serp..0.0.0.lB5RTrRKEzw&bav=on.2,or.&bvm=bv.49967636,d.Yms&fp=23271df1e61efdb7&biw=1276&bih=853">finden!</a>'
    );
    und hier kanns das ergebnis angucken.
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    taos schrieb:
    Man könnte allerdings auch AES nehmen ;-)
    Warum soll man Passwörter mit AES verschlüsseln wollen? Schließlich ist AES ein symmetrisches Verschlüsselungsverfahren. Passwörter hingegen sollen gar nicht mehr »entschlüsselt« werden können, so wie es bei Hashalgorithmen der Fall ist.

    Mittlerweile hört und liest man des öfteren, dass bcrypt eingesetzt werden sollte (statt sha / md5).

    Was czibere mit dem Salt vorgeschlagen hat (ohne es zu erklären) solltest du sowieso anwenden.

    Wird ein Passwort gehasht ist es zwar nicht möglich aus dem Hash das Passwort zu »berechnen«, das bedeutet aber nicht, dass das Passwort sicher ist. Es gibt Tabellen, in denen alle möglichen und unmöglichen Zeichenketten sowie der daraus resultierende Hash eingetragen sind. Sucht man das Klartextpasswort eines Hashes, so muss man nur in der Tabelle nachschauen. Das funktioniert allerdings nur dann, wenn kein Salt eingesetzt wird. Bei einem Salt wird an das eigentliche Passwort der Salt angehängt / vorangestellt / was auch immer. Damit wird aus
    hund
    in cziberes Beispiel
    1. Schritt: lorem ipsum dolor sit ametdea3e0200ce8afadd6cd4c00533b76c991be5e14
    2. Schritt: 64a375dc746dadcb38f13b1e6a615c195aa54953
    Erst diese Zeichenkette wird durch sha1 geschickt und in der Datenbank landet nur noch
    70058550bf899147eddba8c32a7a7488b5cf8939
    .

    Wenn nun jemand in Besitz dieses Strings kommt kann er zwar in Tabellen nachsehen, wird aber feststellen müssen, dass normalerweise solch lange Strings nicht in Tabellen enthalten sind. Dies macht Tabellen zum Knacken der Passwörter unbrauchbar, da sie extra für diesen Salt aufgebaut werden müssten, was sehr viel Zeit in Anspruch nimmt.

    Und warum dann bcrypt?
    Hashfunktionen sind nur dann gut, wenn sie langsam zu berechnen sind. Sind sie schnell berechenbar lassen sich sehr schnell sehr viele Möglichkeiten durchprobieren und das Passwort kann schnell gefunden werden. Mittlerweile gibt es zu schnelle Rechner, sodass selbst SHA nicht mehr richtig sicher ist. bcrypt ist ein Algorithmus, der sehr komplex ist und deshalb viel Rechenzeit benötigt. Dadurch ist ein Brute-Force-Angriff praktisch unmöglich, da nur wenige Möglichkeiten schon viel Zeit zur Berechnung benötigen.
  9. hackyourlife schrieb:
    Und warum dann bcrypt?
    Hashfunktionen sind nur dann gut, wenn sie langsam zu berechnen sind.
    [...]
    bcrypt ist ein Algorithmus, der sehr komplex ist und deshalb viel Rechenzeit benötigt.
    Wie lange darf eine Berechnung bei Lima-City denn dauern? (Fairness)
  10. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    fuerderer schrieb:
    bcrypt ist ein Algorithmus, der sehr komplex ist und deshalb viel Rechenzeit benötigt.
    Wie lange darf eine Berechnung bei Lima-City denn dauern? (Fairness)[/quote]
    Das ist recht einfach:
    system.lima-city.de/info.php
    max_execution_time ist auf 30 Sekunden gesetzt, länger läuft ein PHP-Skript ohnehin nicht.
    Solltest du natürlich den ganzen Tag nichts anderes zu tun haben, und das Skript eine ums andere Mal ausführen, und das am besten 5x gleichzeitig, was ja technisch kein Problem darstellt, dann wäre das allerdings ein Verstoß gegen die FairUse-Klausel.
    Hast du denn überhaupt schon ein ähnliches Skript laufen lassen, und die Laufzeit mitgemessen, um einen realistischen Anhaltspunkt zu wissen, wie lange ein solches Skript laufen würde?
    Es hat ja keinen Sinn, die Laufzeit eiens Skripts auf eine erlaubte Laufzeit hin zu trimmen, sondern erstmal festzustellen, wie lange die notwendigen Berechnungen dauern würden ;-)
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!