Shardingsphere-jdbc 自定義脫敏規則

?添加郵件脫敏規則:

// 123123123@qq.com,將@前4個字符脫敏
12312****@qq.com

代碼重寫MaskAlgorithm相關方法:?

/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You under the Apache License, Version 2.0* (the "License"); you may not use this file except in compliance with* the License.  You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/import com.google.common.base.Strings;
import org.apache.shardingsphere.mask.algorithm.MaskAlgorithmPropertiesChecker;
import org.apache.shardingsphere.mask.spi.MaskAlgorithm;import java.util.Properties;/*** Mask after special-chars algorithm.*/
public final class MaskBeforeSpecialNCharsAlgorithm implements MaskAlgorithm<Object, String> {private static final String SPECIAL_CHARS = "special-chars";private static final String REPLACE_CHAR = "replace-char";private static final String FIRST_N = "first-n";private String specialChars;private Character replaceChar;private Integer firstN;@Overridepublic void init(final Properties props) {specialChars = createSpecialChars(props);replaceChar = createReplaceChar(props);firstN = createFirstN(props);}private Integer createFirstN(final Properties props) {MaskAlgorithmPropertiesChecker.checkPositiveInteger(props, FIRST_N, this);return Integer.parseInt(props.getProperty(FIRST_N));}private String createSpecialChars(final Properties props) {MaskAlgorithmPropertiesChecker.checkAtLeastOneChar(props, SPECIAL_CHARS, this);return props.getProperty(SPECIAL_CHARS);}private Character createReplaceChar(final Properties props) {MaskAlgorithmPropertiesChecker.checkSingleChar(props, REPLACE_CHAR, this);return props.getProperty(REPLACE_CHAR).charAt(0);}@Overridepublic String mask(final Object plainValue) {String result = null == plainValue ? null : String.valueOf(plainValue);if (Strings.isNullOrEmpty(result)) {return result;}int index = result.contains(specialChars) ? result.indexOf(specialChars) : -1;char[] chars = result.toCharArray();for (int i = index-firstN; i < index; i++) {chars[i] = replaceChar;}return new String(chars);}@Overridepublic String getType() {return "MASK_BEFORE_SPECIAL_N_CHARS";}
}

?pom: 依賴版本5.5.0

        <!-- 相關依賴 --><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc</artifactId></dependency><dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId></dependency><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-infra-common</artifactId></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>${swaggerannotations.version}</version></dependency><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-mask-api</artifactId></dependency><dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-mask-core</artifactId></dependency>

項目中添加如下配置:?

org.apache.shardingsphere.mask.spi.MaskAlgorithm文件中增加脫敏類:?

com.xx.xxx.plugin.MaskBeforeSpecialNCharsAlgorithm

?yml中如下配置:

rules:- !MASKtables:ac_user:columns:password:maskAlgorithm: md5_maskemail:maskAlgorithm: mask_before_special_n_chars_maskphone_number:maskAlgorithm: keep_first_n_last_m_maskmaskAlgorithms:md5_mask:type: MD5mask_before_special_n_chars_mask:type: MASK_BEFORE_SPECIAL_N_CHARSprops:special-chars: '@'replace-char: '*'first-n: 4

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897506.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大模型在甲狀腺良性腫瘤診療全流程中的應用研究報告

目錄 一、引言 1.1 研究背景與目的 1.2 研究意義與價值 二、甲狀腺良性腫瘤概述 2.1 疾病介紹 2.2 流行病學特征 2.3 傳統診療方法綜述 三、大模型技術原理及應用優勢 3.1 大模型技術簡介 3.2 在醫療領域的應用進展 3.3 針對甲狀腺良性腫瘤的應用優勢 四、大模型在…

軟件IIC和硬件IIC的主要區別,用標準庫舉例!

學習交流792125321&#xff0c;歡迎一起加入討論&#xff01; 在學習iic的時候&#xff0c;我們經常會遇到軟件 IC和硬件 IC,它兩到底有什么區別呢&#xff1f; 軟件 IC&#xff08;模擬 IC&#xff09;和硬件 IC&#xff08;外設 IC&#xff09;是兩種實現 IC 總線通信的方式…

店匠科技攜手 PayPal 升級支付體驗,助力獨立站商家實現全球增長

在全球化電商競爭加劇的背景下,獨立站為無數商戶插上了通向事業成功的翅膀。然而,搭建店鋪框架容易,真正實現有效運營卻充滿挑戰。只有當各個環節如齒輪般嚴絲合縫,獨立站運營才能更好地助推行進,實現穩健增長。如今,獨立站商家面臨著全鏈路運營的多重挑戰。從品牌塑造、營銷推…

密碼學 網絡安全 科普 網絡安全密碼技術

網絡加密包括密碼技術和網絡加密方法兩個方面。 一、 密碼技術   密碼技術一般分為常規密碼和公鑰密碼。   常規密碼是指收信方和發信方使用相同的密鑰&#xff0c;即加密密鑰和解密密鑰是相同或等價的。比較著名的常規密碼算法有DES及其各種變形、IDEA、FEAL、Skipjack…

P8686 [藍橋杯 2019 省 A] 修改數組--并查集 or Set--lower_bound()的解法!!!

P8686 [藍橋杯 2019 省 A] 修改數組--并查集 題目 并查集解析代碼【并查集解】 Set 解法解析lower_bound代碼 題目 并查集解析 首先先讓所有的f&#xff08;i&#xff09;i&#xff0c;即每個人最開始的祖先都是自己&#xff0c;然后就每一次都讓輪到那個數的父親1&#xff08…

Anaconda中虛擬環境安裝g++和gcc相同版本

安裝torchSDF的時候遇到的&#xff0c;這是g和gcc版本不一致的問題 gcc: fatal error: cannot execute cc1plus: execvp: No such file or directory compilation terminated.查看gcc, g版本 gcc --version | head -n1 g --version | head -n1發現gcc的是anaconda中的&#x…

C++編程:進階階段—4.2對象

目錄 4.2 對象特征 4.2.1 構造函數和析構函數 4.2.2 構造函數的分類 4.2.3 拷貝函數調用時機 4.2.4 構造函數調用規則 4.2.5 深拷貝與淺拷貝 4.2.6 初始化列表 4.2.7 類對象作為類成員 4.2.8 靜態成員 4.2.9 成員變量和成員函數的存儲 4.2.10 this指針 4.2.11 空指針…

【MySQL_04】數據庫基本操作(用戶管理--配置文件--遠程連接--數據庫信息查看、創建、刪除)

文章目錄 一、MySQL 用戶管理1.1 用戶管理1.11 mysql.user表詳解1.12 添加用戶1.13 修改用戶權限1.14 刪除用戶1.15 密碼問題 二、MySQL 配置文件2.1 配置文件位置2.2 配置文件結構2.3 常用配置參數 三、MySQL遠程連接四、數據庫的查看、創建、刪除4.1 查看數據庫4.2 創建、刪除…

配置 Thunderbird 以使用 outlook 郵箱

配置 Thunderbird 以使用 outlook 郵箱 thunder bird 作為郵件客戶端非常好用&#xff0c;不用每次登錄郵箱網頁端查看郵件&#xff0c;直接打開配置好的 thunder bird 即可免登錄查看郵件。 0. 什么是 Thunder Bird ? https://www.thunderbird.net/zh-CN/ Thunderbird 創立…

邊緣計算的業務種類劃分

Pcdn的業務可以根據不同的分類標準來劃分 一、按線路類型劃分 匯聚模式&#xff1a;一個地方有多條線路&#xff0c;業務種類較多。通常使用X86或X99主板組裝的服務器&#xff0c;或各品牌的準系統服務器。收益通常比單線模式更高。 單線模式&#xff1a;一個地方只有一條線路&…

服務器數據恢復—raid5陣列中硬盤出現壞道的數據恢復流程

服務器故障情況&#xff1a; 某公司一臺服務器中有一組多塊硬盤組成的磁盤陣列。磁盤陣列中有2塊硬盤出現故障離線&#xff0c;服務器崩潰&#xff0c;上層數據丟失。 硬件檢測&#xff1a; 硬件工程師對客戶服務器內的所有硬盤進行物理故障檢測&#xff0c;最終確認這2塊硬盤…

Linux:多線程(三.POSIX信號量、生產消費模型、線程池)

目錄 1. 生產者消費者模型 1.1 阻塞隊列(BlockingQueue) 1.2 一個實際應用的例子 2. POSIX信號量 2.1 引入 2.2 回顧加深理解信號量 2.3 信號量的操作接口 3. 基于循環隊列的生產消費模型 3.1 循環隊列 3.2 整個項目 4. 線程池 4.1 概念 4.2 線程池實現 1. 生產者…

關于前后端整合和打包成exe文件的個人的總結和思考

前言 感覺有很多東西&#xff0c;不知道寫什么&#xff0c;隨便寫點吧。 正文 前后端合并 就不說怎么開發的&#xff0c;就說點個人感覺重要的東西。 前端用ReactViteaxios隨便寫一個demo&#xff0c;用于CRUD。 后端用Django REST Framework。 設置前端打包 import { …

Android15 Camera框架中的StatusTracker

StatusTracker介紹 StatusTracker是Android15 Camera框架中用來協調Camera3各組件之間狀態轉換的類。 StatusTracker線程名&#xff1a;std::string("C3Dev-") mId "-Status" Camera3 StatusTracker工作原理 StatusTracker實現批處理&#xff08;狀態…

利用OpenResty攔截SQL注入

需求 客戶的一個老項目被相關部門檢測不安全&#xff0c;報告為sql注入。不想改代碼&#xff0c;改項目&#xff0c;所以想到利用nginx去做一些數據校驗攔截。也就是前端傳一些用于sql注入的非法字符或者數據庫的關鍵字這些&#xff0c;都給攔截掉&#xff0c;從而實現攔截sql…

警惕AI神話破滅:深度解析大模型缺陷與禁用場景指南

摘要 當前AI大模型雖展現強大能力&#xff0c;但其本質缺陷可能引發系統性風險。本文從認知鴻溝、數據困境、倫理雷區、技術瓶頸四大維度剖析大模型局限性&#xff0c;揭示醫療診斷、法律決策等8類禁用場景&#xff0c;提出可信AI建設框架與用戶防護策略。通過理論分析與實操案…

顛覆語言認知的革命!神經概率語言模型如何突破人類思維邊界?

顛覆語言認知的革命&#xff01;神經概率語言模型如何突破人類思維邊界&#xff1f; 一、傳統模型的世紀困境&#xff1a;當n-gram遇上"月光族難題" 令人震驚的案例&#xff1a;2012年Google語音識別系統將 用戶說&#xff1a;“我要還信用卡” 系統識別&#xff…

【Linux】詳談 基礎I/O

目錄 一、理解文件 狹義的理解&#xff1a; 廣義理解&#xff1a; 文件操作的歸類認知 系統角度 二、系統文件I/O 2.1 標志位的傳遞 系統級接口open ?編輯 open返回值 寫入文件 讀文件 三、文件描述符 3.1&#xff08;0 & 1 & 2&#xff09; 3.2 文件描…

超分之DeSRA

Desra: detect and delete the artifacts of gan-based real-world super-resolution models.DeSRA&#xff1a;檢測并消除基于GAN的真實世界超分辨率模型中的偽影Xie L, Wang X, Chen X, et al.arXiv preprint arXiv:2307.02457, 2023. 摘要 背景&#xff1a; GAN-SR模型雖然…

Vue3 Pinia 符合直覺的Vue.js狀態管理庫

Pinia 符合直覺的Vue.js狀態管理庫 什么時候使用Pinia 當兩個關系非常遠的組件&#xff0c;要傳遞參數時使用Pinia組件的公共參數使用Pinia