mysql - AES_ENCRYPT/AES_DECRYPT 中不正确的字符串值错误

标签 mysql sql encryption encoding aes

我正在介绍 MYSQL 中的加密功能。

只写了一个简单的SQL语句,将加密条目添加到字段中

INSERT INTO test_table (field1) VALUES(aes_encrypt('fieldentry','password'))

当我执行 SQL 时,出现以下错误

Error 1366: Incorrect string value: '\xC7\xE13\xC4\xF4!...' for column 'field1' at row 1 SQL Statement - CHANGE COLUMN field1 VARCHAR(255) NOT NULL COMMENT ''

现在我读到它可能与字符集有关,并尝试将其从 utf8-default 排序规则更改为 utf8mb4 - 建议的默认排序规则,但这没有任何区别。

我还尝试将列类型从 VARCHAR 更改为 VARBINARY。然而,当我尝试以下检索数据时,SQL 语句成功运行:

SELECT AES_DECRYPT(field1, '12345') AS endata FROM test_table
    Do Until rst.EOF 
        Response.Write(rst("endata"))
        rst.movenext
    Loop

循环运行但没有返回值(空行)

我只是想在函数 AES_ENCRYPT/AES_DECRYPT 中寻找一个简单明了的加密内容,然后使用密码解密我的数据。

最佳答案

AES_ENCRYPT() encrypts a string and returns a binary string. AES_DECRYPT() decrypts the encrypted string and returns the original string.

因此,您应该将 field1firstname 的类型从 VARCHAR(255) 更改为 VARBINARY(255)。它将解决问题..

编辑:对于类型不匹配..请试试这个..

SELECT *, 
       CAST(AES_DECRYPT(field1, 'mypassword') AS CHAR(50)) end_data
FROM   user

希望这有帮助..

关于mysql - AES_ENCRYPT/AES_DECRYPT 中不正确的字符串值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33454252/

相关文章:

PHP mysqli oop 从表错误中获取数据

mysql - SQL LIKE 是否迭代表的每一行

java - 如何使用 BouncyCaSTLe 轻量级 API 在 GCM 密码中利用 AAD

ruby-on-rails - Rails 生产产生的结果与采用 GPG 加密的生产控制台不同。怎么修?

php - 当用户点击电子邮件中的某些链接时如何登录我的网络应用程序

mysql - phpmyadmin 我可以删除哪些用户?

php - 简单的 mysql 查询不起作用

java - 使用什么方法转义所有可转义字符

c - if 语句计算流密码 Leviathan 源代码中的整数

php - 如何将每个结果添加到 MySQL 中的表中