AES_Decrypt()返回null值

时间:2016-03-21 21:51:47

标签: mysql sql aes mariadb

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

table1

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

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

并将其嵌入到phpMyAdmin中,如下所示: table3

但是,当我使用keyid 2332和已知密码调用它时,它只返回NULL。

table4

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

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

(服务器数据:"服务器版本:10.1.10-MariaDB-mariadb.org二进制分发"," Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.6。 19")

编辑:在评论中运行查询会产生一个blob作为结果,但没有下载链接!然而,它确实简化了对查询的查询,我甚至不必为此创建一个过程。

enter image description here

1 个答案:

答案 0 :(得分:2)

您不需要一个程序来获取解密的blob。而是在select语句中调用函数:

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

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