web-dev-qa-db-fra.com

insérer un mot de passe dans la base de données au format md5?

quelqu'un peut-il me montrer ou expliquer comment insérer un mot de passe dans une base de données au format md5? même si vous pouvez simplement me diriger dans la bonne direction ou quelque chose, je vous en serais reconnaissant, car je ne suis nouveau que par mysql, merci.

$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
'".$password."'
)";
mysql_query($query) or dieerr();
$result = mysql_query("UPDATE ptb_users SET ptb_users.user_id=ptb_users.id");
10
James Tanner

utilisez MD5,

$query="INSERT INTO ptb_users (id,
user_id,
first_name,
last_name,
email )
VALUES('NULL',
'NULL',
'".$firstname."',
'".$lastname."',
'".$email."',
MD5('".$password."')
)";

mais MD5 n'est pas sécurisé. Utilisez SHA2 .

10
John Woo

N'utilisez pas MD5 car il n'est pas sécurisé. Je recommanderais d'utiliser SHA ou bcrypt avec un salt:

SHA256('".$password."')

http://en.wikipedia.org/wiki/Salt_(cryptography)

4
Darren

Darren Davies a partiellement raison de dire que vous devriez utiliser un sel - son affirmation selon laquelle MD5 n'est pas sécurisé pose plusieurs problèmes.

Vous avez dit que vous devez insérer le mot de passe en utilisant un hash Md5, mais cela ne nous dit pas vraiment pourquoi. Est-ce parce que c'est le format utilisé lors de la validation du mot de passe? Avez-vous un contrôle sur le code qui valide le mot de passe?

Le problème avec l'utilisation d'un sel est qu'il évite le problème où deux utilisateurs ont le même mot de passe - ils auront également le même hachage - ce qui n'est pas souhaitable. En utilisant un sel différent pour chaque mot de passe, cela ne se produit pas (avec de très grands volumes de données, il existe toujours un risque de collision résultant de deux mots de passe différents - mais nous l'ignorerons pour l'instant).

Ainsi, vous pouvez soit générer une valeur aléatoire pour le sel et la stocker également dans l'enregistrement, soit utiliser certaines des données que vous possédez déjà, telles que le nom d'utilisateur:

$query="INSERT INTO ptb_users (id,
        user_id,
        first_name,
        last_name,
        email )
        VALUES('NULL',
        'NULL',
        '".$firstname."',
        '".$lastname."',
        '".$email."',
        MD5('"$user_id.$password."')
        )";

(Je suppose que vous avez correctement échappé à toutes ces chaînes plus tôt dans votre code)

1
symcbean

Vous pouvez utiliser MD5 () dans mysql ou md5 () dans php. Pour utiliser salt, ajoutez-le au mot de passe avant d’exécuter md5, par exemple:

$salt ='my_string';
$hash = md5($salt . $password);

Il est préférable d'utiliser un sel différent pour chaque mot de passe. Pour cela, vous devez enregistrer votre sel en db (et aussi en hash). Pendant l'authentification, l'utilisateur enverra son identifiant et le passera. Vous trouverez son hash et son sel dans db et découvrez:

if ($hash == md5($salt . $_POST['password'])) {}
0
bstrx

si vous voulez utiliser le cryptage md5, vous pouvez le faire dans votre script php

$pass = $_GET['pass'];

$newPass = md5($pass)

puis insérez-le dans la base de données de cette façon, cependant, MD5 est une méthode de cryptage à sens unique et est presque impossible à décrypter sans difficulté

0
Martin