mysql - AES_Decrypt() 返回空值

标签 mysql sql aes mariadb

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

table1

这些文件(显然)使用 AES_Encrypt() 进行 AES 加密。 。我知道 key ID 为 2332 的文件的 key ,并且我想调用 AES_Decrypt()在那“blahb”( 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

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

因为如果是的话,我知道我认为正确的 key 实际上是错误的,或者我以错误的方式使用它。因为这是我第一次编写 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

最佳答案

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

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

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

关于mysql - AES_Decrypt() 返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36142311/

相关文章:

php - 格式化 MySQL 查询的结果,就好像它是从控制台运行的一样

php - 加密解密有什么问题?

c - OpenSSL AES_cbc_encrypt 与 EVP 接口(interface)

java - itext PDFReader阅读256位AES加密pdf

c++ - 当在不同函数中调用 mysql_store_result() 时,mysql_free_result() 出现段错误

php - 根据表设置列出表内容(php/mysql)

mysql - SQL - 获取消息列表以及计数值

mysql - SQL 查询的 WHERE 子句中的 CASE 语句

sql - 在应用程序引擎中迁移 Cloud SQL 实例

SQL从min开始按顺序查找缺失的数字?