【发布时间】:2010-12-17 16:07:21
【问题描述】:
我正在使用 sha256 来加密密码。我可以将sha256加密密码保存在mysql中。但我无法使用相同的子句登录。
插入代码:
<?php
error_reporting(E_ALL ^ E_NOTICE);
$username = $_POST['uusername'];
$passcode = $_POST['ppasscode'];
$userflag = $_POST['uuserflag'];
//$passcodeen = hash('sha256',$passcode);
$passcodeen = hash('sha256', (get_magic_quotes_gpc() ? stripslashes($ppasscode) : $ppasscode));
$conn = mysql_connect("localhost","charles","charles") or die("connection failed with DB:".mysql_error());
mysql_select_db("sessiondb");
$query = "INSERT INTO users(username,passcode,userflag) values('$username','$passcodeen','$userflag')";
选择代码:
<?php
error_reporting(E_ALL ^ E_NOTICE);
@mysql_connect("localhost","charles","charles") or die("Connection failed".mysql_error());
@mysql_select_db("sessiondb") or die("Database doesn't exist".mysql_error());
//get user input
$username = $_POST['username'];
$ppasscode = $_POST['ppasscode'];
//$passcodeen = hash('sha256', $ppasscode);
$passcodeen = hash('sha256', (get_magic_quotes_gpc() ? stripslashes($ppasscode) : $ppasscode));
//get session value from mysql
$query = @mysql_query("select username, userflag from users where username ='$username' and passcode = '$passcodeen'") or die("Query execution failed".mysql_error());
有什么问题吗?我很困惑。谢谢。
【问题讨论】:
-
您是否使用 VARCHAR 字段来存储密码?因为 varchars 的最大大小是 255 个字符...
-
您能否发布一个哈希示例,因为它存储在数据库中,与代码中的样子对比?
-
对于 sha256,您需要一个至少 64 个字符的 VARCHAR。
-
@davethegr8,是的,我使用 varchar(255),对吗?
-
检查您的代码是否被魔术引号击中,如下所示:
$passcodeen = hash('sha256', (get_magic_quotes_gpc() ? stripslashes($ppasscode) : $ppasscode));