Δημοσιεύτηκε: 28 Ιουν 2011, 05:37
από Star_Light
medigeek έγραψε:http://www.php.net/manual/en/function.sha1.php
http://php.net/manual/en/function.crypt.php

Βασικά αυτό που συστήνουν είναι να μπει το salt (text string με επιπλέον χαρακτήρες). Για παράδειγμα θα δέχεσαι τον κωδικό που έγραψε ο χρήστης "password", και το sha1() να δημιουργεί ένα hash από το text string "password" συν το "moomoo" (το "moomoo" είναι το salt).

Παρόμοιος τρόπος:
Κώδικας: Επιλογή όλων

$salt = 'ticket-ABC-XYZ-012'; // a random text string
$password = 'this_is_what_user_typed'; // user-input password
echo sha1( sha1($password) . sha1($salt) ); // result: hash text string


Με αυτή τη μέθοδο (salt + (md5 ή sha1 ή άλλο)) και να σου κλέψουν το hashed ("crypted") κωδικό από τη βάση δεδομένων, δε θα μπορούν να το συγκρίνουν με γνωστά hashes κωδικών όπως "admin", "root", επειδή δεν μπορούν να βρουν τον αληθινό κωδικό χωρίς τον αλγόριθμο.
Δηλαδή και "admin" να είναι ο κωδικός, το hash με το salt θα το προστατεύσει (αν δεν ξέρει τον αλγόριθμο του αρχείου php).


Αν ο κωδικος ειναι ελεινος και τελειως κακοσχηματισμενος δεν χρειαζεται να ξερει την κρυπτογραφικη συναρτηση η οποια παράγει την σύνοψη.
Μπορει να το τρέξει στο JTR (John The Ripper) και να του το βρει μεσα σε 1 λεπτο... Για αυτο λεμε να μην βάζουν σαν κωδικους λέξεις που ειναι κανονικες λεξεις σε οποιαδηποτε γλωσσα του κοσμου. Το JTR εγκαθισταται μαζι με ενα αρχειο που έχει μεσα για dictionary attack έχει έτοιμες λέξεις κτλπ.

Το να έχεις την σύνοψη δίνει δυνατότητες... Αυτο νομιζω ηταν και ενα λαθος - κενο στην ψηφιακη υπογραφη? Και για αυτο δημιουργηθηκαν τα ψηφιακα πιστοποιητικα??? Κατι τετοιο εχω καιρο να πιασω θεωρια ασφαλειας που να τα προλαβεις ολα με την C παιδευομαι αυτο το καιρο