加密规则描述

  1.  号码中包含“-”的,“-”之前的数字不做脱敏加密处理操作,“-”之后的数字进脱敏加密处理操作。最后在“-”后面添加
    “-”来标识为脱敏加密后的电话号码;
  2.  移动电话(即号码中不包含“-”的),前三位不做脱敏加密处理操作,后面数字进行脱敏加密处理,最后采用3位,4位,4位的方式加上“-”隔开(如111-2222-3333),
    来标识为脱敏加密后的电话号码;
  3.  将脱敏加密处理后的数据存储到数据库中,在必要的时候可以通过可逆解密,将脱敏后的电话号码解密转换成为原始电话号码。
  4.  将电话号码数字按照一定规则进行加密处理:
  5.  从理赔编码中选取倒数第二位数字判断奇偶性,使用对应的方法打乱需要进行加密的电话号码数字;

a) 如果需要加密的数字是7位,且理赔编码倒数第二位数字为奇数,按照第6,1,2,3,7,5,4的顺序取电话号码值进行重新组合;
b) 如果需要加密的数字是7位,且理赔编码倒数第二位数字为偶数,按照第4,5,7,3,2,1,6的顺序取电话号码值进行重新组合;
c) 如果需要加密的数字是8位,且理赔编码倒数第二位数字为奇数,按照第6,1,2,8,3,7,5,4的顺序取电话号码值进行重新组合;
d) 如果需要加密的数字是8位,且理赔编码倒数第二位数字为偶数,按照第4,5,7,3,8,2,1,6的顺序取电话号码值进行重新组合;

  1.  从理赔编码中选取后八位作为系数,与打乱顺序后电话号码数字依次对应求和取个位数作为加密后的数字。
db2 "CREATE OR REPLACE FUNCTION transPhoneNo (REPORTPHONENO varchar(20),CLAIMQUERYNO VARCHAR(50))
RETURNS VARCHAR(50)
BEGIN
--========================================
--定义变量
--加密电话号码
DECLARE v_iphone varchar(20);
--需要进行加密的数字
DECLARE afterSub VARCHAR(20);
--不需要进行加密的数字
DECLARE noTrans VARCHAR(20);
--加密后的电话号码
DECLARE result VARCHAR(20);
--是否是手机号码
DECLARE isMobilPhone int;--理赔编码取余
DECLARE csqNod2 int;
--电话号码
DECLARE afterSub1 varchar(10);
DECLARE afterSub2 varchar(10);
DECLARE afterSub3 varchar(10);
DECLARE afterSub4 varchar(10);
DECLARE afterSub5 varchar(10);
DECLARE afterSub6 varchar(10);
DECLARE afterSub7 varchar(10);
DECLARE afterSub8 varchar(10);
--理赔编码
DECLARE csqNo1 varchar(10);
DECLARE csqNo2 varchar(10);
DECLARE csqNo3 varchar(10);
DECLARE csqNo4 varchar(10);
DECLARE csqNo5 varchar(10);
DECLARE csqNo6 varchar(10);
DECLARE csqNo7 varchar(10);
DECLARE csqNo8 varchar(10);--==========================================
--非空校验
if (REPORTPHONENO is null or CLAIMQUERYNO is null) then
return REPORTPHONENO;
end if;
--判断电话号码大于20,返回入参电话号码
if(length(REPORTPHONENO)>20) then
return REPORTPHONENO;
end if;--bug1
--判断理赔编码是否为30位
if (length(CLAIMQUERYNO)<>30) then
return REPORTPHONENO;
end if;--判断加密电话号码必须全为数字
if (length(REPORTPHONENO)=12) and (ltrim(rtrim(translate(REPORTPHONENO,'','0123456789')))<>'-') then
return REPORTPHONENO;
elseif (length(REPORTPHONENO)=11) and (ltrim(rtrim(translate(REPORTPHONENO,'','0123456789')))<>'') then
return REPORTPHONENO;
end if;--=======================================
--座机处理方式
--包含'-'
if (LOCATE('-',REPORTPHONENO)=4) or (LOCATE('-',REPORTPHONENO)=5) then
--判断电话号码是否为纯数字(固话只包含‘-’)set afterSub=substr(REPORTPHONENO,locate('-',REPORTPHONENO)+1,(length(REPORTPHONENO)-locate('-',REPORTPHONENO)));set noTrans=substr(REPORTPHONENO,1,locate('-',REPORTPHONENO));set csqNod2=mod((Integer(trim(char(left(right(CLAIMQUERYNO,2),1))))),2);
--座机号加密处理
--afterSub长度为7if (length(afterSub)=7) then set noTrans=substr(REPORTPHONENO,1,locate('-',REPORTPHONENO))||'-';set afterSub1=substr(afterSub,1,1);set afterSub2=substr(afterSub,2,1);set afterSub3=substr(afterSub,3,1);set afterSub4=substr(afterSub,4,1);set afterSub5=substr(afterSub,5,1);set afterSub6=substr(afterSub,6,1);set afterSub7=substr(afterSub,7,1);
--bug2set csqNo1=substr(CLAIMQUERYNO,23,1);      set csqNo2=substr(CLAIMQUERYNO,24,1);set csqNo3=substr(CLAIMQUERYNO,25,1);set csqNo4=substr(CLAIMQUERYNO,26,1);set csqNo5=substr(CLAIMQUERYNO,27,1);set csqNo6=substr(CLAIMQUERYNO,28,1);set csqNo7=substr(CLAIMQUERYNO,29,1);set csqNo8=substr(CLAIMQUERYNO,30,1);if (csqNod2=1) then--倒2位为奇数--6,1,2,3,7,5,4set afterSub6=afterSub6+csqNo1;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set afterSub1=afterSub1+csqNo2;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub2=afterSub2+csqNo3;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub3=afterSub3+csqNo4;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if; set afterSub7=afterSub7+csqNo5;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub5=afterSub5+csqNo6;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub4=afterSub4+csqNo7;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set v_iphone=noTrans||afterSub6||afterSub1||afterSub2||afterSub3||afterSub7||afterSub5||afterSub4;return v_iphone;--倒2位为偶数elseif(csqNod2=0) then--4,5,7,3,2,1,6set afterSub4=afterSub4+csqNo1;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set afterSub5=afterSub5+csqNo2;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub7=afterSub7+csqNo3;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub3=afterSub3+csqNo4;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if; set afterSub2=afterSub2+csqNo5;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub1=afterSub1+csqNo6;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub6=afterSub6+csqNo7;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set v_iphone=noTrans||afterSub4||afterSub5||afterSub7||afterSub3||afterSub2||afterSub1||afterSub6;return v_iphone;end if;
--afterSub长度为8elseif(length(afterSub)=8) then set noTrans=substr(REPORTPHONENO,1,locate('-',REPORTPHONENO))||'-';set afterSub1=substr(afterSub,1,1);set afterSub2=substr(afterSub,2,1);set afterSub3=substr(afterSub,3,1);set afterSub4=substr(afterSub,4,1);set afterSub5=substr(afterSub,5,1);set afterSub6=substr(afterSub,6,1);set afterSub7=substr(afterSub,7,1);set afterSub7=substr(afterSub,7,1);set afterSub8=substr(afterSub,8,1);set csqNo1=substr(CLAIMQUERYNO,23,1);set csqNo2=substr(CLAIMQUERYNO,24,1);set csqNo3=substr(CLAIMQUERYNO,25,1);set csqNo4=substr(CLAIMQUERYNO,26,1);set csqNo5=substr(CLAIMQUERYNO,27,1);set csqNo6=substr(CLAIMQUERYNO,28,1);set csqNo7=substr(CLAIMQUERYNO,29,1);set csqNo8=substr(CLAIMQUERYNO,30,1);--倒2位为奇数if (csqNod2=1) then--6,1,2,8,3,7,5,4   set afterSub6=afterSub6+csqNo1;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set afterSub1=afterSub1+csqNo2;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub2=afterSub2+csqNo3;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub8=afterSub8+csqNo4;if (afterSub8>=10) thenset afterSub8=afterSub8-10;end if; set afterSub3=afterSub3+csqNo5;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if;set afterSub7=afterSub7+csqNo6;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub5=afterSub5+csqNo7;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub4=afterSub4+csqNo8;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set v_iphone=noTrans||afterSub6||afterSub1||afterSub2||afterSub8||afterSub3||afterSub7||afterSub5||afterSub4;return v_iphone;--倒2位为偶数elseif(csqNod2=0) then--4,5,7,3,8,2,1,6set afterSub4=afterSub4+csqNo1;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set afterSub5=afterSub5+csqNo2;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub7=afterSub7+csqNo3;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub3=afterSub3+csqNo4;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if; set afterSub8=afterSub8+csqNo5;if (afterSub8>=10) thenset afterSub8=afterSub8-10;end if;set afterSub2=afterSub2+csqNo6;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub1=afterSub1+csqNo7;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub6=afterSub6+csqNo8;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set v_iphone=noTrans||afterSub4||afterSub5||afterSub7||afterSub3||afterSub8||afterSub2||afterSub1||afterSub6;return v_iphone;end if;elsereturn REPORTPHONENO;end if;--不包含'-'
--手机号处理方式
elseif (length(REPORTPHONENO)=11) then set afterSub=substr(REPORTPHONENO,4);set noTrans=substr(REPORTPHONENO,1,3)||'-';set csqNod2=mod((Integer(trim(char(left(right(CLAIMQUERYNO,2),1))))),2);
--手机号加密处理set noTrans=substr(REPORTPHONENO,1,3)||'-';set afterSub1=substr(afterSub,1,1);set afterSub2=substr(afterSub,2,1);set afterSub3=substr(afterSub,3,1);set afterSub4=substr(afterSub,4,1);set afterSub5=substr(afterSub,5,1);set afterSub6=substr(afterSub,6,1);set afterSub7=substr(afterSub,7,1);set afterSub7=substr(afterSub,7,1);set afterSub8=substr(afterSub,8,1);set csqNo1=substr(CLAIMQUERYNO,23,1);set csqNo2=substr(CLAIMQUERYNO,24,1);set csqNo3=substr(CLAIMQUERYNO,25,1);set csqNo4=substr(CLAIMQUERYNO,26,1);set csqNo5=substr(CLAIMQUERYNO,27,1);set csqNo6=substr(CLAIMQUERYNO,28,1);set csqNo7=substr(CLAIMQUERYNO,29,1);set csqNo8=substr(CLAIMQUERYNO,30,1);--理赔编码倒2为奇数if (csqNod2=1) then--6,1,2,8,3,7,5,4set afterSub6=afterSub6+csqNo1;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set afterSub1=afterSub1+csqNo2;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub2=afterSub2+csqNo3;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub8=afterSub8+csqNo4;if (afterSub8>=10) thenset afterSub8=afterSub8-10;end if; set afterSub3=afterSub3+csqNo5;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if;set afterSub7=afterSub7+csqNo6;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub5=afterSub5+csqNo7;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub4=afterSub4+csqNo8;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set v_iphone=noTrans||afterSub6||afterSub1||afterSub2||afterSub8||'-'||afterSub3||afterSub7||afterSub5||afterSub4;return v_iphone;--理赔编码倒2为偶数elseif(csqNod2=0) then--bug3--4,5,7,3,8,2,1,6set afterSub4=afterSub4+csqNo1;if (afterSub4>=10) thenset afterSub4=afterSub4-10;end if;set afterSub5=afterSub5+csqNo2;if (afterSub5>=10) thenset afterSub5=afterSub5-10;end if;set afterSub7=afterSub7+csqNo3;if (afterSub7>=10) thenset afterSub7=afterSub7-10;end if;set afterSub3=afterSub3+csqNo4;if (afterSub3>=10) thenset afterSub3=afterSub3-10;end if; set afterSub8=afterSub8+csqNo5;if (afterSub8>=10) thenset afterSub8=afterSub8-10;end if;set afterSub2=afterSub2+csqNo6;if (afterSub2>=10) thenset afterSub2=afterSub2-10;end if;set afterSub1=afterSub1+csqNo7;if (afterSub1>=10) thenset afterSub1=afterSub1-10;end if;set afterSub6=afterSub6+csqNo8;if (afterSub6>=10) thenset afterSub6=afterSub6-10;end if;set v_iphone=noTrans||afterSub4||afterSub5||afterSub7||afterSub3||'-'||afterSub8||afterSub2||afterSub1||afterSub6;return v_iphone;end if;end if;end if;
end
"
db2 "values transPhoneNo('0315-7785643','50PAIC420018001544059319454105')"
db2 "values transPhoneNo('12222222222','50PAIC420018001544059319454105')"

db2电话号码加密脚本相关推荐

  1. JAVA之电话号码加密

    1.电话号码加密. 打开记事本,写如下一段代码: import java.util.*; public class Encryption {public String encrypt(int psw) ...

  2. linux执行db2的sql脚本,LinuxShell自动执行当前目录所有DB2 SQL语句

    该shell脚本用于自动执行当前目录下所有的SQL语句,分为以下几个步骤: 步骤1.删除当前目录下已存在的log日志文件 #删除当前目录下log日志文件 for test1 in `ls` do re ...

  3. db2执行sql脚本

    1.连接数据库 db2 connect to iaca42db 2.进入sql所在文件夹 cd '文件目录' 3.执行sql文件 (1)db2 -tvf *.sql,此命令执行*.sql脚本中间出现错 ...

  4. 【JavaScript MD5加密】——简单的MD5加密脚本

    /*md5加密转换脚本 */var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ var b64pad = &q ...

  5. (转)魔兽地图加密脚本和反作弊脚本原理一览

    [转自http://bbs.orc3c.com/viewthread.php?tid=80792] 首先加密可以分成许多类,我这里将其分为"反WE类","反MPQ工具类& ...

  6. js 给电话号码加密,用****

    在很多的开发情况中,我们需要保护用户的电话信息,需要对用户的电话号码进行加密,那么我们就需要操作字符串 1.用普通api做 下面的任何一个方法都行 function getPhone(phone){/ ...

  7. js md5加密脚本

    1. MD5简介 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value) ...

  8. 运行SHA256加密脚本.

    1.输入vim 1.py(1是你想给这个脚本起的名称). 2.脚本内容如下: import hashlib while True: data = input("Ari Max.:" ...

  9. 使用SQL语句 查询电话号码 加密显示

    案例: select t.CUSTOMERSTEL,replace(t.CUSTOMERSTEL, substr(t.CUSTOMERSTEL, 4, 4), '****') CUSTOMERSTEL ...

最新文章

  1. sizeof是c语言的一种运算符,C语言位运算和sizeof运算符详解
  2. bzoj 1968: [Ahoi2005]COMMON 约数研究【枚举】
  3. 用 Python 对比两个目录下的内容,并生成 Json 文件
  4. PHP——使用PHPMailer实现PHP发邮件功能
  5. 使用二进制的方式安装mysql实践纪要
  6. oracle insert两个关联表
  7. Windows 9信息曝光:统一开发接口、整合Cortana到任务栏
  8. Ubuntu下apt-get命令详解(转)
  9. ib课程计算机科学教材,IB国际课程包括哪些学科内容?IB国际课程都有哪些教材?...
  10. 买二手房满二满五怎么理解?什么意思?
  11. nmap 扫描工具 使用方法
  12. 南京商品房信息在哪里查询(查备案价)
  13. c语言 逻辑 与或非
  14. char和数值的类型转换
  15. excel每行按模板导出为一个excel文件,可以指定列文本生成二维码或者条形码
  16. 未来计算机代替人脑吗,计算机不可能替代人脑写作
  17. mysql master host_MySQL5.5.28配置master-maser复制,master-host等参数不用了
  18. python uniform 函数
  19. Linux 驱动 – Backlight 驱动
  20. itertools.groupby与pandas.groupby的异同

热门文章

  1. 网页设计太麻烦?15款免费优质Bootstrap UI工具包助你效率倍增!
  2. BZOJ5329:[SDOI2018]战略游戏(圆方树,虚树)
  3. 谈谈数据传输中的安全性
  4. Linux 开发环境工具 下载网址大全
  5. L2-024. 部落-PAT团体程序设计天梯赛GPLT
  6. 【C++】n_element的用法
  7. 1012. 数字分类 (20)-PAT乙级真题
  8. 1018. 锤子剪刀布 (20)-PAT乙级真题
  9. echarts里面的参数解释_SPMSM控制:传统PI速度环参数的整定
  10. 如何禁用和启用mysql外键约束