Ubuntu 20.04 上的 MySQL aes_decrypt 返回十六进制数据

Ubuntu 20.04 上的 MySQL aes_decrypt 返回十六进制数据

我最近在我的 64 位笔记本电脑上安装了 Ubuntu 20.04 LTS。

我还安装了 MySQL。到目前为止,MySQL 上的一切运行良好。但是,我在 AES_ENCRYPT 和 AES_DECRYPT 方面遇到了问题。我使用的代码与在 Windows 10 下的 MySQL 上使用的代码相同,在 Windows 10 下,一切都运行正常。然而,在 Ubuntu 20.04 上,当我尝试解密数据时,我只得到一个十六进制字符串。

The mysql table was created using

create table my_encrypted_control (
    encrypted_data  varbinary(4096) not null
);

The insert is as follows

insert into my_encrypted_control ( encrypted_data )
values ( aes_encrypt('TEST STRING','funky-boy') );

The select to retrieve and decrypt the data is

select aes_decrypt(encrypted_data,'funky-boy') from my_encrypted_control;

look at the hex data in the result

mysql> select aes_decrypt(encrypted_data,'funky-boy') from my_encrypted_control;
+----------------------------------------------------------------------------------+
| aes_decrypt(encrypted_data,'funky-boy')                                          |
+----------------------------------------------------------------------------------+
| 0x5445535420535452494E47                                                         |
+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> 

只是为了兴趣,我运行了一个未加密的选择,如下所示:

mysql> select * from my_encrypted_control;
+------------------------------------+
| encrypted_data                     |
+------------------------------------+
| 0xB5300A75B6BDE6C6F3F4E39B76AEF045 |
+------------------------------------+
1 row in set (0.00 sec)

mysql> 

注意十六进制/二进制数据!

如何在 Ubuntu 下使用 MySQL 加密和解密数据?

相关内容