AES_Decrypt() 返回空值

AES_Decrypt() returning null value

SQL-这里是新手。我正在使用包含数据(longblob 类型)的 table,它看起来像这样(导入到 phpMyAdmin 中):

这些文件(显然)使用 AES_Encrypt() 进行了 AES 加密。我知道密钥 ID 为 2332 的文件的密钥,我想在 "blahb" (blob) 上调用 AES_Decrypt()。为此,我写了一个程序:

BEGIN
    DECLARE dat longblob;
    SELECT blahb into dat from fyle where keeid = p_id;
    SELECT AES_Decrypt(dat, p_key) into p_out;
END

并将其嵌入 intp phpMyAdmin,如下所示:

然而,当我使用 keyid 2332 和已知密码调用它时,它只是 returns NULL。

我问这个问题是因为我想知道: 我的存储过程是否正确?

因为如果是的话,我知道我认为正确的密钥实际上是错误的,或者我以错误的方式使用它。由于这是我第一次编写 SQL 程序,所以我不知道错误是在第一个原因还是第二个原因中:/.

(服务器数据: "Server version: 10.1.10-MariaDB - mariadb.org binary distribution", "Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.19")

编辑:运行 评论中的查询显然给出了一个 blob 作为结果,但没有下载 link!然而,它确实大大简化了查询,我现在甚至不必为此创建过程。

您不需要任何过程来获取解密的 blob。改为在 select 语句中调用函数:

SELECT AES_Descrypt(blahb, 'PLACE_HERE_YOUR_KEY') from fyle where keeid = 2332

在 PHPMyAdmin 中将 blob 字段显示为 text 非常简单,并且已在 this question 中介绍。