# 前言

MySQL 是一个流行的关系型数据库管理系统,它提供了许多内置函数来处理和加密数据。其中一个常用的函数是 AES_ENCRYPT,它可以用于对字段值进行加密处理。本文将详细介绍如何在 MySQL 中使用 AES_ENCRYPT 函数进行字段加密,并提供相应的源代码示例。

# 直接使用 AES_ENCRYPT&&AES_DECRYPT 函数导致的问题。

l
select AES_ENCRYPT('test_code','key')

结果 加密过后的字符串是一串很奇怪的字符。
直接使用aes_encrypt()函数加密
尝试使用上面加密过后的字符解密,也不会成功。

l
select AES_DECRYPT('a\���1�)�j���V','key')

# 解决办法

使用 hex () 和 unhex () 函数处理原数据。

# hex () 与 unhex () 函数

hex ():将一个字符串或数字转换为十六进制格式的字符串。

unhex ():把十六进制格式的字符串转化为原来的格式。每对十六进制数字转化为一个字符。执行 hex(str)的逆运算。即,它将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符。结果字符将作为二进制字符串返回。参数字符串中的字符必须为合法的十六进制数字:“ 0” …“ 9”,“ A” …“ F”,“ a” …“ f”。如果 UNHEX 在参数中遇到任何非十六进制数字,则返回 NULL。

# 再次尝试 AES 加密

如此加密可以直接使用 varchar 类型直接存储。
mysql aes encrypt01

# 解密 SQL

l
SELECT AES_DECRYPT(UNHEX('17615CB915B4D931F9299F6AFDEAC856'),'key')
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Piggy 微信支付

微信支付

Piggy 支付宝

支付宝