在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何對加密后的數據進行模糊查詢

Android編程精選 ? 來源:Android編程精選 ? 作者:Android編程精選 ? 2022-08-16 10:14 ? 次閱讀

我們知道加密后的數據對模糊查詢不是很友好,本篇就針對加密數據模糊查詢這個問題來展開講一講實現的思路,希望對大家有所啟發。

為了數據安全我們在開發過程中經常會對重要的數據進行加密存儲,常見的有:密碼、手機號、電話號碼、詳細地址、銀行卡號、信用卡驗證碼等信息,這些信息對加解密的要求也不一樣,比如說密碼我們需要加密存儲,一般使用的都是不可逆的慢hash算法,慢hash算法可以避免暴力破解(典型的用時間換安全性)。

在檢索時我們既不需要解密也不需要模糊查找,直接使用密文完全匹配,但是手機號就不能這樣做,因為手機號我們要查看原信息,并且對手機號還需要支持模糊查找,因此我們今天就針對可逆加解密的數據支持模糊查詢來看看有哪些實現方式。

在網上隨便搜索了一下,關于《加密后的模糊查詢》 的帖子很多,順便整理了一下實現的方法,不得不說很多都是不靠譜的做法,甚至有一些沙雕做法,接下來我們就對這些做法來講講實現思路和優劣性。

如何對加密后的數據進行模糊查詢

我整理了一下對加密的數據模糊查詢大致分為三類做法,如下所示:

  • 沙雕做法(不動腦思考直男的思路,只管實現功能從不深入思考問題)
  • 常規做法(思考了查詢性能問題,也會使用一些存儲空間換性能等做法)
  • 超神做法(比較高端的做法從算法層面上思考)

我們就對這三種實現方法一一來講講實現思路和優劣性,首先我們先看沙雕做法。

沙雕做法

  • 將所有數據加載到內存中進行解密,解密后通過程序算法來模糊匹配
  • 將密文數據映射一份明文映射表,俗稱tag表,然后模糊查詢tag來關聯密文數據

沙雕一

我們先來看看第一個做法,將所有數據加載到內存中進行解密,這個如果數據量小的話可以使用這個方式來做,這樣做既簡單又實惠,如果數據量大的話那就是災難,我們來大致算一下。

一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間,用DES來舉例,13800138000加密后的串HE9T75xNx6c5yLmS5l4r6Q==占24個字節。

91a4e1c6-1cf7-11ed-ba43-dac502259ad0.png

輕則上百兆,重則上千兆,這樣分分鐘給應用程序整成Out of memory,這樣做如果數據少只有幾百、幾千、幾萬條時是完全可以這樣做的,但是數據量大就強烈不建議了。

沙雕二

我們再來看第二個做法,將密文數據映射一份明文映射表,然后模糊查詢映射表來關聯密文數據,what???!!!那我們為什么要對數據加密呢,直接不加密不是更好么!

我們既然對數據加密肯定是有安全訴求才會這樣做,增加一個明文的映射表就違背了安全訴求,這樣做既不安全也不方便完全是脫褲子放x,多此一舉,強且不推薦。

常規做法

我們接下來看看常規的做法,也是最廣泛使用的方法,此類方法及滿足的數據安全性,又對查詢友好。

  • 在數據庫實現加密算法函數,在模糊查詢的時候使用decode(key) like '%partial%
  • 對密文數據進行分詞組合,將分詞組合的結果集分別進行加密,然后存儲到擴展列,查詢時通過key like '%partial%'

常規一

在數據庫中實現與程序一致的加解密算法,修改模糊查詢條件,使用數據庫加解密函數先解密再模糊查找,這樣做的優點是實現成本低,開發使用成本低,只需要將以往的模糊查找稍微修改一下就可以實現,但是缺點也很明顯,這樣做無法利用數據庫的索引來優化查詢,甚至有一些數據庫可能無法保證與程序實現一致的加解密算法,但是對于常規的加解密算法都可以保證與應用程序一致。

如果對查詢性能要求不是特別高、對數據安全性要求一般,可以使用常見的加解密算法比如說AES、DES之類的也是一個不錯的選擇。

如果公司有自己的算法實現,并且沒有提供多端的算法實現,要么找個算法好的人去研究吃透補全多端實現,要么放棄使用這個辦法。

常規二

對密文數據進行分詞組合,將分詞組合的結果集分別進行加密,然后存儲到擴展列,查詢時通過key like '%partial%',這是一個比較劃算的實現方法,我們先來分析一下它的實現思路。

先對字符進行固定長度的分組,將一個字段拆分為多個,比如說根據4位英文字符(半角),2個中文字符(全角)為一個檢索條件,舉個例子:

ningyu1使用4個字符為一組的加密方式,第一組ning ,第二組ingy ,第三組ngyu ,第四組gyu1 … 依次類推。

如果需要檢索所有包含檢索條件4個字符的數據比如:ingy ,加密字符后通過 key like “%partial%” 查庫。

我們都知道加密后長度會增長,增長的這部分長度存儲就是我們要花費的額外成本,典型的使用成本來換取速度,密文增長的幅度隨著算法不同而不同以DES舉例,13800138000加密前占11個字節,加密后的串HE9T75xNx6c5yLmS5l4r6Q==占24個字節,增長是2.18倍,所以一個優秀的算法是多么的重要,能為公司節省不少成本,但是話又說回來算法工程師的工資也不低,所以我也不知道是節省成本還是增加成本,哈哈哈…你們自己算吧。

回到主題,這個方法雖然可以實現加密數據的模糊查詢,但是對模糊查詢的字符長度是有要求的,以我上面舉的例子模糊查詢字符原文長度必須大于等于4個英文/數字,或者2個漢字,再短的長度不建議支持,因為分詞組合會增多從而導致存儲的成本增加,反而安全性降低。

大家是否都對接過 淘寶、拼多多、JD他們的api,他們對平臺訂單數據中的用戶敏感數據就是加密的同時支持模糊查詢,使用就是這個方法,下面我整理了幾家電商平臺的密文字段檢索方案的說明,感興趣的可以查看下面鏈接。

  • 淘寶密文字段檢索方案:https://open.taobao.com/docV3.htm?docId=106213&docType=1

  • 阿里巴巴文字段檢索方案:https://jaq-doc.alibaba.com/docs/doc.htm?treeId=1&articleId=106213&docType=1

  • 拼多多密文字段檢索方案:https://open.pinduoduo.com/application/document/browse?idStr=3407B605226E77F2

  • 京東密文字段檢索方案:https://jos.jd.com/commondoc?listId=345

ps. 基本上都是一樣的,果然都是互相抄襲,連加密后的數據格式都一致。

這個方法優點就是實現起來不算復雜,使用起來也較為簡單,算是一個折中的做法,因為會有擴展字段存儲成本會有升高,但是可利用數據庫索引優化查詢速度,推薦使用這個方法。

超神做法

我們接下來看看優秀的做法,此類做法難度較高,都是從算法層面來考慮,有些甚至會設計一個新算法,雖然已有一些現成的算法參考,但是大多都是半成品無法拿來直接使用,所以還是要有人去深入研究和整合到自己的應用中去。

從算法層面思考,甚至會設計一個新算法來支持模糊查找

這個層面大多是專業算法工程師的研究領域,想要設計一個有序的、非不可逆的、密文長度不能增長過快的算法不是一件簡單的事情,大致的思路是這樣的,使用譯碼的方式進行加解密,保留密文和原文一樣的順序,從而支持密文模糊匹配,說的比較籠統因為我也不是這方面的專家沒有更深一步的研究過,所以我從網上找了一些資料可以參考一下。

  • 數據庫中字符數據的模糊匹配加密方法:https://www.jiamisoft.com/blog/6542-zifushujumohupipeijiamifangfa.html

這里提到的Hill密碼處理和模糊匹配加密方法FMES可以重點看看.

  • 一種基于BloomFilter的改進型加密文本模糊搜索機制研究:http://kzyjc.cnjournals.com/html/2019/1/20190112.htm

  • 支持快速查詢的數據庫如何加密:https://www.jiamisoft.com/blog/5961-kuaisuchaxunshujukujiami.html

  • 基于Lucene的云端搜索與密文基礎上的模糊查詢:https://www.cnblogs.com/arthurqin/p/6307153.html

基于Lucene的思路就跟我們上面介紹的常規做法二類似,對字符進行等長度分詞,將分詞后的結果集加密后存儲,只不過存儲的db不一樣,一個是關系型數據庫,一個是es搜索引擎。

  • 云存儲中一種支持可驗證的模糊查詢加密方案:http://jeit.ie.ac.cn/fileDZYXXXB/journal/article/dzyxxxb/2017/7/PDF/160971.pdf

總結

我們到這里對加密數據的檢索方案全部介紹完了,我們首先提到的是網上搜索隨處可見的沙雕做法,在這里也講了不推薦使用這些沙雕做法,盡量使用常規做法,如果公司有專業算法方向人才的話不妨可以考慮基于算法層面的超神做法。

總的來說從投入、產出比、及實現、使用成本來算的話常規做法二是非常推薦的。
審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7237

    瀏覽量

    90906
  • 算法
    +關注

    關注

    23

    文章

    4695

    瀏覽量

    94578
  • 加密
    +關注

    關注

    0

    文章

    317

    瀏覽量

    24280

原文標題:被問懵了,加密后的數據如何進行模糊查詢?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何在MBDT中使用S32k344進行加密

    我想加密和解密通過 CAN 總線發送的數據,為此我想使用 S32k344 中的 HSE 模塊在 MBDT 1.5 中進行對稱加密-解密,但工具箱中沒有可用的塊。那我該怎么做呢。請分享與
    發表于 03-25 07:21

    在STM32微控制器中實現數據加密的方法

    ,支持多種加密算法,如AES、DES、SHA等。這些庫函數對加密操作進行了優化,使得開發者可以輕松地在STM32平臺上實現數據加密和通訊安全
    發表于 03-07 07:30

    EMMC數據加密技術與應用

    特點,但同時也面臨著數據泄露的風險。 數據加密技術概述 數據加密技術是保護數據不被未授權訪問的有
    的頭像 發表于 12-25 09:51 ?956次閱讀

    數據加密辦法

    ,當我們聊到數據加密的時候,可以從這些角度入手來提高數據的安全性。 TDE手段 TDE也就是透明數據加密,是一種在
    的頭像 發表于 12-24 09:47 ?486次閱讀

    淺談加密芯片的一種破解方法和對應加密方案改進設計

    ⊕RAND2)這些因子運算得到臨時過程秘鑰Key’,再使用Key’對數據Data做加密得到密文數據Data’。主MCU在收到密文數據Data’和ID2和R2
    發表于 12-20 15:31

    加密算法在云計算中如何應用?

    /TLS協議,確保數據在客戶端和服務器之間安全傳輸。存儲加密技術如AES(高級加密標準),保護存儲在云端的數據不被未經授權的用戶訪問。 身份驗證 : 通過對用戶
    的頭像 發表于 12-17 16:02 ?426次閱讀

    恒訊科技分析:云服務器數據加密具體是如何操作的?

    云服務器數據加密通常涉及以下幾個步驟和方法: 1、數據分類:首先需要對數據進行分類,確定哪些數據
    的頭像 發表于 11-25 11:55 ?400次閱讀

    aes加密的常見錯誤及解決方案

    AES(Advanced Encryption Standard,高級加密標準)是一種對稱加密算法,它使用固定長度的密鑰對數據進行加密。在使
    的頭像 發表于 11-14 15:13 ?3687次閱讀

    socket 加密通信的實現方式

    握手過程協商加密算法、生成會話密鑰。 數據傳輸: 使用協商的加密算法和會話密鑰對數據進行加密和解
    的頭像 發表于 11-12 14:18 ?1171次閱讀

    云存儲服務中的數據加密技術

    隨著云計算技術的快速發展,越來越多的企業和個人開始將數據存儲在云平臺上。然而,數據安全問題也隨之成為人們關注的焦點。為了保護數據的安全性和隱私性,云存儲服務提供商采用了多種數據
    的頭像 發表于 10-28 15:04 ?1008次閱讀

    云安全服務加密存儲代碼怎么查

    云安全服務加密存儲代碼的查詢與實現是一個復雜的過程,涉及到多個方面,包括數據加密、密鑰管理、訪問控制等。 1. 引言 隨著云計算的快速發展,越來越多的企業和個人將
    的頭像 發表于 07-02 09:28 ?613次閱讀

    ClickHouse內幕(3)基于索引的查詢優化

    ClickHouse索引采用唯一聚簇索引的方式,即Part內數據按照order by keys有序,在整個查詢計劃中,如果算子能夠有效利用輸入數據的有序性,對算子的執行性能將有巨大的提升。本文討論
    的頭像 發表于 06-11 10:46 ?1255次閱讀
    ClickHouse內幕(3)基于索引的<b class='flag-5'>查詢</b>優化

    ESP-IDF中能否加密應用固件?

    描述:我啟動了flahs加密,這樣物理上可以防止數據的讀取和篡改。但在進行https-OTA時,從服務器傳輸固件到設備的過程中,可能會泄露固件。正常使用ESP-IDF編譯生成的固件是明文,也就是沒有
    發表于 06-11 06:50

    ESP32對Flash加密能否使用OTA進行后續的維護更新?

    ESP32對Flash加密能否使用OTA進行后續的維護更新
    發表于 06-07 08:21

    esp32加密無法關閉怎么解決?

    ... .html#id19嘗試關閉加密功能時,發現提示New value required for efuse,如圖顯示。 請教這是什么原因? 另外我發現加密,無法使用erase-flash 擦除flash,如圖
    發表于 06-06 06:48
    主站蜘蛛池模板: 操的好爽 | 日韩美女奶水喂男人在线观看 | 亚洲国产精品婷婷久久久久 | 毛片免费看网站 | 国模沟沟一区二区三区 | 久久精品国产免费高清 | 免费在线看a | 日本黄色片免费看 | 精品免费视在线观看 | 91大神视频网站 | 色人阁婷婷 | 天天操天天操 | 97久久伊人精品影院 | 九九精品国产兔费观看久久 | 色丁香影院 | 免费看黄视频 | 午夜无码国产理论在线 | 在线麻豆国产传媒60在线观看 | 男人j桶进女人免费视频 | 免费一级毛片在线播放 | 未成人禁止视频高清在线观看 | 特级片免费看 | 色综合天| 一级全免费视频播放 | 怡红院亚洲怡红院首页 | brazzersvideosex欧美高清 | 高清性色生活片久久久 | 天堂中文最新版www 天堂资源8中文最新版在线 | 天天做天天玩天天爽天天 | 亚洲天堂免费观看 | 男男生子大肚play做到生 | 男男之h啪肉np文 | 五月婷婷六月婷婷 | 免费无毒片在线观看 | 噜噜色小说 | 夜色321看片资源站 夜色sese | 一二三区在线观看 | sao虎在线精品永久 se94se欧美 | 亚洲天堂免费 | 黄乱色伦短篇小说h | 九九涩|