gpt4 book ai didi

数据库 | AES 加密()/解密()

转载 作者:可可西里 更新时间:2023-11-01 08:14:57 33 4
gpt4 key购买 nike

我需要以可解密的方式加密一个字符串。最好的方法是通过给定的密码来获得一点保护。安全性在这里并不那么重要。

到目前为止我选择了 AES_ENCRYPT() 但无法解密它。

加密: SELECT AES_ENCRYPT('test', 'test')
输出: 87bd903885943be48a4e68ab63b0ec6a

解密: SELECT AES_DECRYPT('87bd903885943be48a4e68ab63b0ec6a', 'test')
输出: NULL !

简单的问题:我到底为什么不能解密它?在网上找不到任何相关信息。

如果解决方案变得太大(我喜欢简单),我也可以使用另一种加密方法。

非常感谢!


MySQL 客户端版本:5.5.41

最佳答案

需要先将十六进制字符串转换成二进制数据:

SELECT AES_DECRYPT(UNHEX('87bd903885943be48a4e68ab63b0ec6a'), 'test') FROM DUAL;

实际上,我很惊讶您的原始 SELECT 语句首先返回了一个十六进制字符串。这是我得到的:

mysql> SELECT AES_ENCRYPT('test','test') FROM DUAL;
+----------------------------+
| AES_ENCRYPT('test','test') |
+----------------------------+
| ???8??;?Nh?c??j |
+----------------------------+
1 row in set (0.02 sec)

如果我显式调用 HEX(),我只能得到一个十六进制字符串:

mysql> SELECT HEX(AES_ENCRYPT('test','test')) FROM DUAL;
+----------------------------------+
| HEX(AES_ENCRYPT('test','test')) |
+----------------------------------+
| 87BD903885943BE48A4E68AB63B0EC6A |
+----------------------------------+
1 row in set (0.00 sec)

(这是在 MySQL 5.6.22 版本中)

关于数据库 | AES 加密()/解密(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31850178/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com