在phpMyAdmin中哈希

cod*_*ess 6 mysql hash phpmyadmin

我有一个mySQL数据库,我正在使用phpMyAdmin来访问它.数据库具有表员工,其中包含姓名,地址,电子邮件和密码等字段.

最初密码字段只是VARCHAR (20).但现在我想用SHA-256哈希技术哈希我的密码.

我对数据库没有太多经验,所以我想知道的是 -

  1. 我可以在不影响其他字段或整个表的情况下散列所有当前员工的密码吗?

  2. 将来当我在数据库中输入数据(来自Web应用程序)时,我在哪里编写散列函数来散列密码?即,是否在前端发生散列,然后散列的密码存储在数据库中,或者密码进入数据库,然后进行散列并存储.

解决方案和建议表示赞赏.

Joh*_*Woo 10

问题1:我可以在不影响其他字段或整个表的情况下散列所有当前员工的密码吗?

答:是的.但是您需要将密码列的大小改为40-42.您将使用PASSWORD( )内置函数来加密密码

ALTER TABLE tableName MODIFY `password` VARCHAR(42); 
Run Code Online (Sandbox Code Playgroud)

之后,您现在可以更新密码列

UPDATE tablename
SET     `password` = PASSWORD(`password`);
Run Code Online (Sandbox Code Playgroud)

前).

abcde12345 => *20B30AFAF441808B50273EDA287132EC25B02DE2
Run Code Online (Sandbox Code Playgroud)

Q2:将来当我在数据库中输入数据时(来自Web应用程序),我在哪里编写散列函数来散列密码?

A:在你的INSERT query

INSERT INTO tableName (name, address, email, password) 
VALUES ('aa','bb',''cc,PASSWORD('abcde12345'))
Run Code Online (Sandbox Code Playgroud)

当您要搜索密码时,首先加密文本:

SELECT *
FROM   tableName
WHERE `password` = PASSWORD('abcde12345')
Run Code Online (Sandbox Code Playgroud)

还有一件事,不要忘记逃避你的Password专栏,backtick因为它是一个MySQL保留字.


mat*_*tei 1

您可以在 php 中对密码进行哈希处理,然后将其存储在数据库中:

$pwd = hash('sha256',$_POST['password']);
Run Code Online (Sandbox Code Playgroud)

MySQL不支持sha256函数,因此您需要通过代码进行散列,然后存储/更新您的密码表。否则你可以考虑这个http://stuge.se/mysql-sha256/