首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD5盐登录系统

MD5盐登录系统
EN

Stack Overflow用户
提问于 2011-08-15 16:59:35
回答 3查看 8.5K关注 0票数 0

嘿,伙计,我在试着做一个使用MD5加密密码的登录系统。我有加密工作,它只是出于某些原因,当我输入密码"palmer“到登录页面,并点击登录按钮,我让它把我发送到一个页面,它告诉我加密的密码,并使用"palmer”作为密码,它输出这个"Duncan登录使用密码4844fd4088ef5278ad18f892808ebda8 - palmer“。加密后数据库中的THe密码为"4669a6b46c8d891b373cfcd664dff6“。为什么这两个密码是不同的?我使用的是相同的盐(盐是"a123b123“。

下面是我在注册表上加密密码的代码:

代码语言:javascript
复制
$password = $_POST['password'];

$md5pass = md5($salt.md5($password));

下面是我的登录码。

代码语言:javascript
复制
<?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');
//}
?>
EN

回答 3

Stack Overflow用户

发布于 2011-08-15 17:15:39

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

代码语言:javascript
复制
$salt = sha1(getRandomSalt());
$digest = sha1($password.$salt).'$'.$salt; // use sha1 instead of md5

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

代码语言:javascript
复制
list($stored_pw, $stored_salt) = explode('$', $stored_digest);
if($stored_pw == sha1($user_provided_pw.$stored_salt)) {
  echo 'user provided correct password';
}
票数 7
EN

Stack Overflow用户

发布于 2011-08-15 17:19:24

为此,您真的应该使用bcrypt。在之前的堆栈溢出后的How do you use bcrypt for hashing passwords in PHP?上有更多关于bcrypt的内容

bcrypt被认为是使用salt实现密码散列的最安全的方法,因为它速度很慢-比MD5慢得多。

票数 3
EN

Stack Overflow用户

发布于 2013-05-12 23:36:27

只需对上面的knittl的解决方案做一点小小的评论:

你需要替换这行

代码语言:javascript
复制
if($stored_pw = sha1($user_provided_pw.$stored_salt)) {

通过

代码语言:javascript
复制
if($stored_pw == sha1($user_provided_pw.$stored_salt)) {

才能让它工作。

(我试着将它添加到knittl的帖子中,但它说编辑需要至少6个字符)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7063205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档