2012-08-02 72 views
0

我想知道是否有可能在PHPmyAdmin中使用SQL来获得一个字段来显示只有散列字符或类似的东西,这样未经授权的用户将无法在字母和数字中看到这些字符?这是为我创建的密码字段。如何在phpmyadmin/sql中设置一个散列字段?

谢谢

+2

如果这是用于存储密码安全地,[检查出该SO文章](http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database )。 – Matt 2012-08-02 15:23:09

回答

2

要直接回答你的问题,是的,MySQL有散列函数。他们列出了here

但是,如果您确实想要安全地存储您的密码,请阅读this article

UPDATE

说,例如,您正在使用SHA2()散列的密码(使用你自己的判断阅读上面的文章后,确定要使用的哈希算法)。

要比较认证字符串(请参阅:“用户输入密码从登录屏幕”)到存储的密码(阅读:“原始用户作为他/她的密码输入的密码”),你会做这样的事情伪代码:

$passwordHash  = getPasswordForUser($userName); 
$authenticationHash = sha2($authenticationPassword); 

if ($passwordHash === $authenticationHash) { 
    // successful login. do something here. 
} 
+0

嗨马特,我有点困惑,所以它不像使用'PASSWORD(str)?'或换句话说'SELECT PASSWORD('TeacherPassword')' – user1394925 2012-08-02 15:51:34

+0

从MySQL手册:**注意** 'PASSWORD()'函数被MySQL服务器中的认证系统使用;你不应该在你自己的应用程序中使用它。为此,请考虑'MD5()'或'SHA2()'。有关在应用程序中安全地处理密码和身份验证的更多信息,请参阅RFC 2195的第2部分(质询 - 响应身份验证机制(CRAM))。 – Matt 2012-08-02 15:55:18

+0

哈希函数往往是*单向*算法。为了将认证字符串与存储的密码进行比较,必须对认证字符串执行散列,然后将散列与存储的密码(已经被散列)进行比较。 – Matt 2012-08-02 15:56:27

相关问题