最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql如何對已經(jīng)加密的字段進(jìn)行模糊查詢詳解

 更新時(shí)間:2022年09月09日 15:28:18   作者:EvenBoy  
對于密碼等信息可以采用單向加密,驗(yàn)證的時(shí)候用同樣的方式加密匹配即可,下面這篇文章主要給到家介紹了關(guān)于mysql如何對已經(jīng)加密的字段進(jìn)行模糊查詢的相關(guān)資料,需要的朋友可以參考下

場景:在模糊查詢電話號碼的時(shí)候,發(fā)現(xiàn)電話號碼是進(jìn)行加密過的,而傳進(jìn)來的參數(shù)卻是明文的

PS:作為一個(gè)合格的程序員對用戶的一些敏感數(shù)據(jù)都要進(jìn)行加密處理操作

比如:姓名、手機(jī)號、身份證號等等。

問題:但是加密之后我們怎么來查詢呢?

1、客戶端一般是這樣的

1、了解HEX 函數(shù)與UNHEX 函數(shù)

HEX 函數(shù):將一個(gè)字符串或數(shù)字轉(zhuǎn)換為十六進(jìn)制格式的字符串

UNHEX 函數(shù):執(zhí)行HEX(str)的逆運(yùn)算。 即,它將參數(shù)中的每對十六進(jìn)制數(shù)字解釋為一個(gè)數(shù)字,并將其轉(zhuǎn)換為該數(shù)字表示的字符。 結(jié)果字符將作為二進(jìn)制字符串返回。

演示:

-- 先將mysql字符串轉(zhuǎn)換為十六進(jìn)制格式的字符串
SELECT HEX("mysql") 
 
-- 輸出結(jié)果
6D7973716C
 
-- 在將上面的字符串轉(zhuǎn)換成二進(jìn)制字符串
SELECT UNHEX("6D7973716C")
 
-- 輸出結(jié)果
mysql

2、了解AES_ENCRYPT函數(shù)與AES_DECRYPT函數(shù)

1、AES_ENCRYPT函數(shù),這個(gè)函數(shù)的使用場景是對一些安全性要求比較高的數(shù)據(jù)使用AES加密,語法為:

AES_ENCRYPT(str,key),其中第一個(gè)參數(shù)表示要加密的數(shù)據(jù),第二參數(shù)是對應(yīng)的key。

2、AES_DECRYPT函數(shù),這個(gè)函數(shù)是與AES_DECRYPT對應(yīng)的一個(gè)函數(shù),用于解密經(jīng)過AES_DNCRYPT加密的數(shù)據(jù),語法為:AES_DNCRYPT(str,key)。

-- 使用AES_ENCRYPT函數(shù)對明文進(jìn)行加密操作
SELECT AES_ENCRYPT('小王', 'intel1234567890a') FROM dual; 
 
-- 使用AES_DECRYPT函數(shù)密文進(jìn)行解密操作
SELECT AES_DECRYPT(AES_ENCRYPT('小王', 'intel1234567890a'),'intel1234567890a') FROM dual; 

然后把上面的函數(shù)一起結(jié)合使用就可以實(shí)現(xiàn)模糊查詢了

-- 此處使用AES-128-ECB加密模式
--第一個(gè)參數(shù)(小王)明文 第二個(gè)參數(shù)(intel1234567890a)為秘鑰(需要跟下面java代碼對應(yīng))
select hex(aes_encrypt("小王","intel1234567890a"))  from dual; --明文加密為密文
 
--第一個(gè)sql加密出來的密文 
select aes_decrypt(unhex("密文"),"intel1234567890a") from dual; --密文解密為明文
 
--模糊查詢
select * from table where aes_decrypt(unhex("密文"),"intel1234567890a") like CONCAT('%','明文','%')

有人會問了為什么要使用hex和unhex我直接使用aes_encrypt和aes_decrypt加解密不就行了嗎?

因?yàn)橹苯邮褂?strong>aes_encrypt會導(dǎo)致加密出來的結(jié)果亂碼

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 隨機(jī)的后續(xù)可更改
     */
    private static final byte[] key = "intel1234567890a".getBytes(StandardCharsets.UTF_8);
    /**
     * 初始化加密(默認(rèn)的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
//    解密后: 小王
}

總結(jié)

到此這篇關(guān)于mysql如何對已經(jīng)加密的字段進(jìn)行模糊查詢的文章就介紹到這了,更多相關(guān)mysq對加密字段模糊查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法

    由于是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那么怎樣才能按照我們預(yù)想的數(shù)字順序排序呢
    2013-03-03
  • MYSQL之on和where的區(qū)別解讀

    MYSQL之on和where的區(qū)別解讀

    這篇文章主要介紹了MYSQL之on和where的區(qū)別解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MySQL單表恢復(fù)的步驟

    MySQL單表恢復(fù)的步驟

    這篇文章主要介紹了MySQL單表恢復(fù)的步驟,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • Win7 64位 mysql 5.7下載安裝常見問題小結(jié)

    Win7 64位 mysql 5.7下載安裝常見問題小結(jié)

    這篇文章主要介紹了Win7 64位 mysql 5.7下載安裝常見問題小結(jié),本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2017-06-06
  • 提升MySQL查詢效率及查詢速度優(yōu)化的四個(gè)方法詳析

    提升MySQL查詢效率及查詢速度優(yōu)化的四個(gè)方法詳析

    查詢語句的優(yōu)化是提高M(jìn)ySQL查詢速度的重要方法,可以通過使用JOIN語句、子查詢、優(yōu)化where子句等方式來減少查詢的時(shí)間,下面這篇文章主要給大家介紹了關(guān)于提升MySQL查詢效率及查詢速度優(yōu)化的四個(gè)方法,需要的朋友可以參考下
    2023-04-04
  • mysql8.0.27配置步驟以及注意事項(xiàng)

    mysql8.0.27配置步驟以及注意事項(xiàng)

    這篇文章主要給大家介紹了關(guān)于mysql8.0.27配置步驟以及注意事項(xiàng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • ADODB 入門

    ADODB 入門

    ADODB 入門...
    2006-12-12
  • mysql中如何去除小數(shù)點(diǎn)后面多余的0

    mysql中如何去除小數(shù)點(diǎn)后面多余的0

    這篇文章主要介紹了mysql 中去除小數(shù)點(diǎn)后面多余的0的方法 ,需要的朋友可以參考下
    2014-03-03
  • MySQL導(dǎo)致索引失效的幾種情況

    MySQL導(dǎo)致索引失效的幾種情況

    本文主要介紹了MySQL導(dǎo)致索引失效的幾種情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • MySQL中的MVCC底層原理解讀

    MySQL中的MVCC底層原理解讀

    本文詳細(xì)介紹了MySQL中的多版本并發(fā)控制(MVCC)機(jī)制,包括版本鏈、ReadView以及在不同事務(wù)隔離級別下MVCC的工作原理,通過一個(gè)具體的示例演示了在可重復(fù)讀隔離級別下的MVCC執(zhí)行過程
    2025-02-02

最新評論

赤峰市| 维西| 曲松县| 文登市| 开平市| 五大连池市| 武强县| 高雄县| 宁明县| 七台河市| 淳安县| 涞源县| 会东县| 怀集县| 交城县| 白城市| 高密市| 汝城县| 竹北市| 大余县| 琼结县| 昭觉县| 东辽县| 鄂伦春自治旗| 五指山市| 五台县| 库尔勒市| 泌阳县| 哈巴河县| 新蔡县| 平泉县| 黄浦区| 隆尧县| 彩票| 镇宁| 新巴尔虎左旗| 邮箱| 新安县| 大连市| 嘉禾县| 开江县|