gpt4 book ai didi

mysql aes_encrypt 到 longtext 列

转载 作者:可可西里 更新时间:2023-11-01 08:37:48 28 4
gpt4 key购买 nike

是否可以将 MySQL AES_ENCRYPT 存储到 LONGTEXT 列中?

我知道我假设使用 varbinary 或 blob,但我有一个表,我在其中存储了一堆随机“设置”,并且 settings_value 列是长文本。

我去那里存储一个“smtp 邮件密码”,有点卡住了。

如果没有,我想,我会通过 php 将其存储为十六进制字符串。

解决方案:

我的查询是这样的:

INSERT INTO table (setting_value)VALUES(AES_ENCRYPT('password', 'key')) ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value)

正如您将在下面的评论中看到的那样,我尝试将列编码从 utf8_unicode_ci 更改为 utf8_bin,但仍然失败。我更改为 latin1_bin 并且有效。

我切换回 utf8_unicode_ci 并将查询更改为以下内容:

INSERT INTO table (setting_value)VALUES(HEX(AES_ENCRYPT('password', 'key'))) ON DUPLICATE KEY UPDATE setting_value=VALUES(setting_value)

这行得通,因为它只是将我的值转换为十六进制字符串。

我花了一点时间弄清楚如何正确取回值,因此出于文档目的:

$pass = SELECT AES_DECRYPT(BINARY(UNHEX(setting_value)), 'key') as orig_text FROM table
echo $pass->orig_text

最佳答案

你试过吗?设置测试用例非常容易,据我所知,它可以很好地满足您的要求:

mysql> create table t (id int unsigned not null auto_increment primary key, str LONGTEXT);
Query OK, 0 rows affected (0.13 sec)

mysql> desc t;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| str | longtext | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.05 sec)

mysql>
mysql> INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));
Query OK, 1 row affected (0.02 sec)

mysql>
mysql> select id,str,AES_DECRYPT(str,'password') from t;
+----+-----------------------------+-----------------------------+
| id | str | AES_DECRYPT(str,'password') |
+----+-----------------------------+-----------------------------+
| 1 | ö½¨Ü·øÍJ/ª¼Tf€D | text |
+----+-----------------------------+-----------------------------+
1 row in set (0.00 sec)

关于mysql aes_encrypt 到 longtext 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5654899/

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