mysql字段加密及模糊查询

select hex(aes_encrypt(user_name,"intel1234567890a")) from t_user
select * from t_user where aes_decrypt(unhex(aes_user_name),"intel1234567890a") like CONCAT("%","李",'%')

了解HEX 函数与UNHEX 函数

HEX 函数:将一个字符串或数字转换为十六进制格式的字符串

UNHEX 函数:执行HEX(str)的逆运算。 即,它将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符。 结果字符将作为二进制字符串返回。

java工具类AES加解密同步使用:

package com.lezu.springboot.utils;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;

import java.nio.charset.StandardCharsets;

/**
* AES加密方式算法工具类
* 此处使用AES-128-ECB加密模式,key需要为16位。
*/
public class AesUtils {
/**
* KEY 随机的后续可更改
*/
private static final byte[] key = “intel1234567890a”.getBytes(StandardCharsets.UTF_8);
/**
* 初始化加密(默认的AES加密方式)
*/
private static final SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);

/**
* 加密
*
* @param str 加密之前的字符串
* @return
*/
public static String encryptHex(String str) {
return aes.encryptHex(str);
}

/**
* 解密
*
* @param str 加密后的字符串
* @return
*/
public static String decryptStr(String str) {
return aes.decryptStr(str);
}

public static void main(String[] args) {
String plaintext = “小王”;
String ciphertext = “183b2940aa6c6d2d73721415660c64c8”;

String encryptHex = AesUtils.encryptHex(plaintext);
System.out.println(“加密后: ” + encryptHex);

String decryptStr = AesUtils.decryptStr(ciphertext);
System.out.println(“解密后: ” + decryptStr);
}

// 加密后: 183b2940aa6c6d2d73721415660c64c8
// 解密后: 小王
}
mysql字段加密及模糊查询

发表评论

您的电子邮箱地址不会被公开。

滚动到顶部