SQL-Newbie在这里。我正在使用包含数据(longblob
类型)的表,它看起来像这样(导入到phpMyAdmin中):
这些文件(显然)使用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
但是,当我使用keyid 2332和已知密码调用它时,它只返回NULL。
我只是问这个问题,因为我想知道: 我的存储过程是否正确?
因为如果是的话,我知道我认为正确的密钥实际上是错误的,或者我以错误的方式使用它。由于这是我第一次编写SQL过程,我不知道故障是出于第一个原因还是第二个原因:/。
(服务器数据:"服务器版本:10.1.10-MariaDB-mariadb.org二进制分发"," Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.6。 19")
编辑:在评论中运行查询会产生一个blob作为结果,但没有下载链接!然而,它确实简化了对查询的查询,我甚至不必为此创建一个过程。
答案 0 :(得分:2)
您不需要一个程序来获取解密的blob。而是在select语句中调用函数:
SELECT AES_Descrypt(blahb, 'PLACE_HERE_YOUR_KEY') from fyle where keeid = 2332
在PHPMyAdmin中将blob
字段显示为text
非常简单,已在this question中介绍过。