gpt4 book ai didi

MySQL 无法使用 AES_ENCRYPT 函数返回项目

转载 作者:行者123 更新时间:2023-11-30 00:20:17 24 4
gpt4 key购买 nike

我添加了一个带有以下 SQL 语句的项目:

INSERT INTO `db`.`users` (`name`, `pass`) VALUES ('Terry', AES_ENCRYPT('32145', '32145'))

然后,新行肯定会添加到表中。

当我尝试使用“名称”和“通行证”查找此项目时,返回了一个空集。查询语句如下:

SELECT * FROM `users` WHERE `name` ='Terry' AND `pass`= AES_ENCRYPT('32145', '32145')

AES_ENCRYPT函数有什么问题吗? :-(

2014 年 4 月 27 日更新:

“pass”的类型被定义为varchar(255),结果证明这是一场灾难。 :-(

将其类型修改为 varbinary(255) 后,一切正常。

原来的问题已经解决了。但是,为什么类型 varchar(255) 在这种情况下会失败?

最佳答案

查看此fiddle和 aes_crypt documentation .

您的pass列是什么类型?在 fiddle 上我将其定义为:

pass varbinary(200)

插入是否成功:

INSERT INTO users (name, pass) VALUES ('Terry', aes_encrypt('32145', '32145'))

然后这样查询:

select * 
from users
where name = 'Terry' and pass = aes_encrypt('32145', '32145');

select *, aes_decrypt(pass, '32145')
from users
where pass = aes_encrypt('32145', '32145');

所以你的查询应该有效。

关于MySQL 无法使用 AES_ENCRYPT 函数返回项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com