MD5盐登录系统

Dun*_*mer 0 php md5 login system

嘿家伙我正在尝试建立一个使用MD5加密密码的登录系统.我有加密工作,所有这只是出于某种原因,当我在登录页面输入密码"palmer"并点击登录按钮我发送给我一个页面,它告诉我加密密码和使用"palmer"作为它输出的密码"Duncan使用密码登录4844fd4088ef5278ad18f892808ebda8 - palmer".加密时数据库中的密码是"4669a6b46c8d891b373cfcd664dff6".为什么两个密码不同?我使用相同的盐(盐是"a123b123".

下面是我的代码,它在寄存器上加密密码:

$password = $_POST['password'];

$md5pass = md5($salt.md5($password));
Run Code Online (Sandbox Code Playgroud)

以下是我的登录代码.

<?php
session_start();
include('config/config.php');

$email = $_POST['email'];
$password = $_POST['password'];
$pass2 = md5($salt.md5($password));

$check = mysql_query("SELECT `email`,`password` FROM user WHERE (`email`='$email' AND       `password`='$pass2')") or die(mysql_error());

$count = mysql_num_rows($check);

//if($count == 1) {
$_SESSION['user'] = strtoupper($user);
//header('Location: /panel/index.php');
echo("Duncan Logged in using password $pass2 - $pass");
//} else {
//$_SESSION['errormsg'] = "<div id='error'><strong>Error:</strong> Invalid Username or Password!</div>";
//header('Location: index.php');
//}
?>
Run Code Online (Sandbox Code Playgroud)

kni*_*ttl 7

你必须存储你的盐 - 并且请使用随机盐,这样两个拥有相同密码的用户将获得不同的摘要! - 某处供以后使用:

$salt = sha1(getRandomSalt());
$digest = sha1($password.$salt).'$'.$salt; // use sha1 instead of md5
Run Code Online (Sandbox Code Playgroud)

稍后您可以使用相同的盐检查提供的密码:

list($stored_pw, $stored_salt) = explode('$', $stored_digest);
if($stored_pw == sha1($user_provided_pw.$stored_salt)) {
  echo 'user provided correct password';
}
Run Code Online (Sandbox Code Playgroud)