使用AES加密密码MySQL

时间:2015-10-31 20:12:10

标签: mysql sql encryption aes

我对存储在我的应用程序用户表中的密码实施AES加密,但是,当我运行以下查询时,我似乎无法验证用户是否存在。我无法看出它有什么问题。任何帮助将不胜感激。

SELECT * FROM user_table WHERE username='users-name' AND password=AES_DECRYPT('users-password','encryption-key');

2 个答案:

答案 0 :(得分:1)

drop table user_table;
create table user_table
(   id int auto_increment primary key,
    username varchar(50) not null,
    password varbinary(256) not null    -- up to you, 128, 256, variable, see link below
);

insert into user_table (username,password) values ('Shahraiz T.', aes_encrypt('secret','hashedEncryptionKey'));

SELECT * FROM user_table 
WHERE username='Shahraiz T.' 
AND AES_DECRYPT(password,'hashedEncryptionKey')='secret';
-- hurray, 1 row

SELECT * FROM user_table 
WHERE username='Shahraiz T.' 
AND AES_DECRYPT(password,'hashedEncryptionKey')='imposter';
-- evil imposter, 0 rows

Mysql Encryption and Compression Functions手册页。

你所拥有的,以及你对hashedEncryptionKey所做的事情超出了这个问题的范围。

答案 1 :(得分:0)

希望这可能有用。

首先,我选择以后需要使用的列数(帮助,用户名和密码),但在我的情况下,选择整个密码列AES_DECRYPT和单个YOUR_KEY_HERE。

通过添加WHERE username= 'admin' AND password=AES_ENCRYPT('YOUR_PASSWORD','YOUR_KEY_HERE'),您可以在输入密码时从表单中输入加密的密码。

SELECT aid,username, AES_DECRYPT(password,'YOUR_KEY_HERE') as pwd 
FROM admin_login WHERE username= 'admin' AND 
password= AES_ENCRYPT('YOUR_PASSWORD','YOUR_KEY_HERE');

注意:YOUR_PASSWORD是在输入字段中输入的密码。

输出列

aid, username, pwd