gpt4 book ai didi

php - 使用 MYSQL AES_ENCRYPT 函数与 PDO 但错误且字符串格式不同

转载 作者:行者123 更新时间:2023-11-29 18:32:29 25 4
gpt4 key购买 nike

这是我的查询

SELECT client_id,client_name,client_db_ip,client_db_username,AES_ENCRYPT(client_db_pass, '1234') as client_db_pass,client_db_name FROM client_list WHERE client_id =:id

//请关注 AES_ENCRYPT(client_db_pass, '1234') 作为 client_db_pass

现在,如果我直接使用 phpmyadmin 查询,我将得到结果,例如 AES_ENCRYPT 之后的 client_db_pass:

501defc4013f3f21529c123f33c065ad

但是当我使用 PDO 获取数据时问题就出现了,

        $Q = "SELECT client_id,client_name,client_db_ip,client_db_username,AES_ENCRYPT(client_db_pass, '1234') as client_db_pass,client_db_name FROM client_list WHERE client_id =:id";
$R = $this->pdo->prepare($Q);
$R->bindParam(':id', $id);
$R->execute();
$result = $R->fetch(PDO::FETCH_ASSOC);

如果我 var_dump($result)

我会得到这个结果:

array (size=6)
'client_id' => string '1' (length=1)
'client_name' => string 'tester' (length=4)
'client_db_ip' => string '127.0.0.2' (length=9)
'client_db_username' => string 'root' (length=4)
'client_db_pass' => string 'PïÄ??!Rœ?3Àe­' (length=16)
'client_db_name' => string 'test_user' (length=9)

你能看到“client_db_pass”字符串的数组是

result 2 = PïÄ??!Rœ?3Àe­

不是

result 1 = 501defc4013f3f21529c123f33c065ad

如果使用pdo,我可以知道如何获得结果1“501defc4013f3f21529c123f33c065ad”吗?

谢谢

最佳答案

AES_ENCRYPT(),根据docs ,返回二进制数据:

returns a binary string containing the encrypted output.

如果您在 MySQL 客户端中看到其他任何内容,那是因为客户端自动对原始输出进行编码。

在 PHP 中,您可以使用以下命令获取十六进制转储: bin2hex()在 MySQL 中你可以使用 HEX() 来做到这一点。我认为你不需要它,MySQL 和 PHP 都可以很好地处理二进制文件。

关于php - 使用 MYSQL AES_ENCRYPT 函数与 PDO 但错误且字符串格式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45571632/

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