Oracle汉字用户名数据脱敏长度不变,rpad函数使用
信息安全考虑,有时需要对用户名称进行数据脱敏。
针对Oracle数据库,进行取数数据脱敏处理
脱敏规则:
长度小于9个字符,只保留前3个汉字与后3个汉字,中间全部由*填充。
长度9个字及以上及奇数,隐去中间3个字;长度10个字及以上及奇数,隐去中间4个字。
例如:
公司名称:宇宙无敌厉害的超级大公司的杭州分公司
字段长度:18
脱敏后:宇宙无敌厉害的****司的杭州分公司
可实现的正确答案:
select
t.no, ---公司编号
case when length(t.name)<=8 then substr(t.name,1,3)||substr('**',1,length(t.name)-6)|| substr(t.name,-3,3) -------公司名称长度绝对大于6,一般都在6以上
else substr(t.name,1,round(length(t.name)/2,0)-2)||substr('****',1,4-mod(length(t.name),2))||substr(t.name,-(round(length(t.name)/2,0)-2),round(length(t.name)/2,0)-2) end ) -----脱敏后公司名
from aaa t;
说明:
substr(t.name,1,3) 公司名称前三个字
substr(t.name,-3,3) 公司名称后三个字
round(length(t.name)/2,0)-2 计算公司名称 * 前一部分的长度
substr('****',1,4-mod(length(t.name),2)) 单数3个* 双数4个*
oracle 中使用substr函数对中文进行识别,可以一个汉字一个汉字的识别。
输入:
substr('宇宙无敌厉害的超级大公司的杭州分公司',1,3)
输出:
宇宙无
弯路:
中间尝试使用rpad(或者lpad)函数。
发现该函数对中文字段长度识别有很大的问题。
rpad('宇宙无敌',10,'*')
理论上,字符串长度为10,“宇宙无敌”长度为4,输出结果应该为:宇宙无敌******
实际上,Oracle读取“宇宙无敌”长度为8,输出结果为:宇宙无敌**
具体情况参考:https://www.cnblogs.com/objectorl/p/rpad-length-issue-in-multibyte-encoding.html
Lpad Function:在PL/SQL中用于往源字符串的左侧填充一些字符。
函数参数:lpad( string1, padded_length, [ pad_string ] )
其中
string1:源字符串
padded_length:最终返回的字符串的长度,如果最终返回的字符串的长度比源字符串的小,那么此函数实际上对源串进行截断处理
pad_string:用于填充的字符,可以不填,默认为空字符
Oracle汉字用户名数据脱敏长度不变,rpad函数使用的更多相关文章
- Oracle 11g数据脱敏
Oracle 11g数据脱敏 前言 最近开发人员有个需求,导一份生产库的数据到测试库. 由于生产数据安全需要,需要并允许对导出的数据进行加密脱敏处理. 关于加密和脱敏 个人理解, 加密是通过一系列规则 ...
- Oracle ebs 数据脱敏
https://blog.csdn.net/pan_tian/article/details/16120351Data Masking可对数据进行不可逆的去身份化后,再用于非生产环境,同时自动保留引用 ...
- java 数据脱敏
所谓数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份 ...
- oracle中的数据对象
oracle中的数据对象有表.视图.索引.序列等 表的相关操作 1.创建表 方式一: 方式二:create table person( create table person1 id number(1 ...
- Oracle LPAD/RPAD函数在处理中文时的注意事项
首先看下Oracle官方对函数的定义: The RPAD function returns an expression, right-padded to a specified length with ...
- Oracle导入excel数据方法汇总[转]
摘要:在程序编制过程和数据汇总交换过程中,经常会碰到需要将其他人员在office办公环境下编制的文件数据内容导入oracle中的情况.目前程序开发者经常使用的方法有如下几种:1,使用oracle提供的 ...
- Oracle 摘去数据块的面纱
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00018000h 6 A2 0 0 0c 0 80 3 8b 61 15 0 0 0 3 4 type frmt spa ...
- 【应用】:shell crontab定时生成oracle表的数据到txt文件,并上传到ftp
一.本人环境描述 1.oracle服务端装在win7 32位上,oracle版本为10.2.0.1.0 2.Linux为centos6.5 32位,安装在Oracle VM Vir ...
- Oracle 汉字在不同字符集下所占字节
今天发现了一个问题,一个长度设置为2000字节的字段,插入一条长度为1000的汉字数据,竟然报错了. 一个汉字占两个字节,按理说刚好是2000个字节.但通过查看日志,发现插入数据的长度为3000字节. ...
随机推荐
- 为 pycharm 修改 Theme & Color
版本: pycharm-community-4.5.2 安装之后先导入 (File --> Import Setting --> django.jar) 将文件pycharm-themes ...
- Python 2.6 安装wxPython后提示"64.....32"错误解决办法
ImportError: /usr/local/lib/wxPython-unicode-2.8.10.1/lib/python2.6/site-packages/wx-2.8-mac-unicode ...
- vs2015 debugger,unable to attach to application iisexpress.exe
vs2015 unable to attach to application iisexpress.exe,没有可用的数据了 搞了一天也没解决...
- javascript总结41:表格全选反选,经典案例详解
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- setoolkit基础
1.社会工程学攻击 2.快速追踪测试 3.第三方模块 4.升级软件 5.升级配置 6.帮助 99.退出 1.鱼叉式网络钓鱼攻击 2.网页攻击 3.传染媒介式(俗称木马) 4.建立payloaad和li ...
- 三)EasyUI layout
参考文档 http://www.jeasyui.com/documentation/layout.php
- (转)通过扩展让ASP.NET Web API支持JSONP
原文地址:http://www.cnblogs.com/artech/p/3460544.html 同源策略(Same Origin Policy)的存在导致了“源”自A的脚本只能操作“同源”页面的D ...
- CAD&CG GDC 2018大会论文录用名单
Section 1 增强现实与图形学: 报告时间:2018-8-25 14:00-15:30 报告地点:会议室1 P000009 基于增强现实的产品质量信息传递方法 P000104 重彩画的风格转移 ...
- 团体程序设计天梯赛L2-013 红色警报 2017-03-23 22:08 55人阅读 评论(0) 收藏
L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...
- linux 管道与重定向
命令行shell数据流有如下定义: 通过管道和重定向可以控制CLI的数据流