- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以将 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/
我目前在我的 php 脚本中进行这样的加密: select name from table; while (php loop) { echo encrypt(); echo $name;
我想做 select name, lower(hex(aes_encrypt(name,'mykey'))) as encValue from myTable; 不使用该部件 lower(hex(ae
这个问题已经有答案了: Unable to AES_DECRYPT after AES_ENCRYPT in mysql (4 个回答) 已关闭 7 年前。 我在 mysql 服务器 5.5.38 上
我知道 base64 将特定图像或文本的总“大小”增加了 1/3,但是 AES_ENCRYPT 呢? 最佳答案 AES 是一种 block 密码,因此只处理指定 block 大小的倍数的数据。它的输入
我已经准备了一个查询,但它一直在抛出错误。这是我的查询: $query = "INSERT INTO encryption_tests (values) VALUES (AES_ENCRYPT('pa
我需要加密 MySQL 中的列,我正在使用 AES_ENCRYPT。我想找出一种在 WHERE 子句中使用此数据列的安全方法。我的问题是 - 1) 我可以使用相同的密码短语 AES_ENCRYPT W
是否可以在 ECB(如 CBC)以外的模式下使用 MySQL 的 AES_ENCRYPT 和 AES_DECRYPT 函数? Stack Overflow 上的各种问题讨论了 MySQL 如何使用 E
我的查询不工作 INSERT INTO rebuilder (id_utente, pwd)VALUES('75693',AES_ENCRYPT('password','set')) 我没有错误,但数
有人知道 mysql 对其 aes_encrypt 使用什么填充方案吗? 我进行了大量的谷歌搜索,但我发现的只是“字节填充”。但这太笼统了! 谢谢 最佳答案 数据填充是根据 RFC3369/PKCS#
我正在尝试对用户密码使用 AES 加密(MySQL 中的 AES_ENCRYPT),但我遇到了很多不同的问题。 这是我用来将新用户存储到数据库中的 SQL 查询: INSERT INTO user V
这个问题在这里已经有了答案: AES ECB encrypt/decrypt only decrypts the first 16 bytes (2 个回答) 4年前关闭。 我不知道为什么下面的代码会
我正在尝试提高包含敏感数据的 MySQL 数据库的安全性。我正在努力掌握一些术语。有人可以让我知道我是否正确理解了情况: 静态加密 - 似乎我可以在表级别启用此功能。表中的所有数据都使用 key 加密
我面临 AES 加密文本的问题,需要一些有关相同问题的帮助,这里有一个解释,我正在使用此函数将纯文本转换为密文。 /* * Encrypt *len bytes of data * All dat
我正在尝试启动一个查询,用原始值更新 key 。 搜索采用 pass1 值的查询,使用旧密码对其进行解密,然后使用新密码对其进行再次加密。 在数据库中,表如下所示: MySQL v5.1.61 表1:
我添加了一个带有以下 SQL 语句的项目: INSERT INTO `db`.`users` (`name`, `pass`) VALUES ('Terry', AES_ENCRYPT('32145'
我正在使用 NetBeans IDE 练习使用 Java 和 MySQL 进行编程。我可以使用下面的代码登录我的应用程序。但是如果我使用 MySQL 的 aes_encrypt 功能加密我的密码,我不
我正在将值插入数据库,但我需要对密码进行加密,然后向其中插入特殊字符。我使用的是 mysql 数据库,编码是在普通的 php 程序中完成的。 PHP PROGRAM $mysecretkey = 'd
这更像是一个关于使用 AES_ENCRYPT 对插入 MySQL 数据库的数据进行加密的安全问题。 存储用于加密数据的 key 的最佳位置是什么?显然不在数据库中! :) 最佳答案 好吧,您没有太多选
我遇到了以下错误: AES_ENCRYPT method not found. 请帮助我在 YII2 中使用此 SQL 方法。 public function beforeSave($insert)
我正在介绍 MYSQL 中的加密功能。 只写了一个简单的SQL语句,将加密条目添加到字段中 INSERT INTO test_table (field1) VALUES(aes_encrypt('fi
我是一名优秀的程序员,十分优秀!