我将自己介绍给MYSQL中的加密函数。
刚写了一个简单的SQL语句,将加密的条目添加到字段中
INSERT INTO test_table (field1) VALUES(aes_encrypt('fieldentry','password'))
当我执行SQL时,我收到以下错误
错误1366:字符串值不正确:'\ xC7 \ xE13 \ xC4 \ xF4!...'用于第1行的第'field1'列SQL语句 - CHANGE COLUMN
field1
VARCHAR(255)NOT NULL COMMENT' “
现在我已经读过它可能与CHARACTER SET有关,并尝试将它从utf8-default collation更改为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函数中使用密码来直接查找加密然后解密数据的内容。
答案 0 :(得分:4)
AES_ENCRYPT() encrypts a string and returns a binary string.
AES_DECRYPT()解密加密的字符串并返回原始字符串 字符串。
因此,您应该将field1
,firstname
的类型从VARCHAR(255)
更改为VARBINARY(255)
。它将解决问题..
编辑:对于类型不匹配..请尝试此操作..
SELECT *,
CAST(AES_DECRYPT(field1, 'mypassword') AS CHAR(50)) end_data
FROM user
希望这会有所帮助..