2010-07-17 9 views
0

Je veux faire une autre page d'inscription qui est liée à la base de données de moteur social, mais quand je MD5 le mot de passe et le stocke dans la table de se_users, l'utilisateur ne peut pas se connecter moteur social ont une autre méthode de cryptage, Quelqu'un peut-il s'il vous plaît me donner une fonction pour crypter les mots de passe de la manière du moteur social?Aide de chiffrement de mot de passe de moteur social

C'est leur fonction mais je ne sais pas comment le mettre en œuvre sur mon script:

function user_password_crypt($user_password) 
{ 
global $setting; 

if(!$this->user_exists) 
{ 
    $method = $setting['setting_password_method']; 
    $this->user_salt = randomcode($setting['setting_password_code_length']); 
} 

else 
{ 
    $method = $this->user_info['user_password_method']; 
} 

// For new methods 
if($method>0) 
{ 
    if(!empty($this->user_salt)) 
    { 
    list($salt1, $salt2) = str_split($this->user_salt, ceil(strlen($this->user_salt)/2)); 
    $salty_password = $salt1.$user_password.$salt2; 
    } 
    else 
    { 
    $salty_password = $user_password; 
    } 
} 

$user_password_crypt = md5($salty_password); 

return $user_password_crypt; 
} 

Merci

+0

Ce que vous voulez dire, c'est le hachage, pas le cryptage. – igorw

Répondre

1

Ils apposent et les sels préfixer le mot de passe avant de l'exécuter par MD5.

Voici comment le sel est généré, ressemble à une chaîne aléatoire dont la longueur est spécifiée dans la configuration de l'application »

$this->user_salt = randomcode($setting['setting_password_code_length']); 

Ici ils se séparent un sel de moitié, et mis sur le côté gauche avant le mot de passe, et le côté droit après »

list($salt1, $salt2) = str_split($this->user_salt, ceil(strlen($this->user_salt)/2)); 
$salty_password = $salt1.$user_password.$salt2; 

maintenant, ils hacher le mot de passe salé:

$user_password_crypt = md5($salty_password); 

Ce que vous auriez à faire, pour déchiffrer ceci correctement, est de lire le sel pour cet utilisateur.

$username = $POST['username']; 
$password = $POST['password']; 
$user = get_user_from_database($username); 
list($salt1, $salt2) = str_split($user->salt, ceil(strlen($user->salt)/2)); 

$salted_password = md5($salt1.$password.$salt2); 

if($salted_password == $user->crypted_password) { 
    echo "Login successful"; 
} else { 
    echo "Invalid password"; 
} 

Here is the Wikipedia page sur des sels en cryptographie.

+0

Salut, Merci pour votre réponse, mais comment le hash md5 généré sera toujours le même si une partie de celui-ci est un code aléatoire? –

+1

Ce n'est pas aléatoire à chaque fois. La première fois que le compte d'utilisateur est créé, un code aléatoire est généré et enregistré avec le mot de passe.Chaque fois que vous obtenez les informations de l'utilisateur, son sel sera la même chaîne que celle que vous avez générée la première fois, et non plus aléatoire. –

0

Un couple de choses:

Entreposez-vous le hachage MD5 du mot de passe de l'utilisateur? Selon le code que vous avez publié, Social Engine salit le hachage (une méthode pour éviter les tables arc-en-ciel). En tant que côté, un hachage MD5 n'est pas un moyen cryptographiquement sécurisé de hacher un mot de passe. En outre, le hachage des mots de passe lors de la connexion et la transmission du hachage ne sont pas plus sûrs que de passer le mot de passe en texte brut. Afin de vous connecter en toute sécurité, vous devrez effectuer vos connexions via HTTPS (ou moins correctement en chiffrant le mot de passe)

3

le moteur social utilise la combinaison de sel de sécurité par défaut, sel d'utilisateur et mot de passe utilisateur pour crypter le mot de passe, de sorte que vous juste besoin de combiner ces trois données et convertir en MD5.

$ enc_mot_de_passe = md5 ('default_decurity_salt', 'user_password', 'user_salt');

EX. - MD5 ('6e3cf54ce0aa10bb69d69926e82b62b3be9022b9'. '123456'. '3486524');

Cela fonctionnera.

+2

Cela fonctionne pour moi grâce à une tonne –

2

Vous pouvez essayer cette

md5 ('default_salt', 'user_salt', 'user_password');