首页 > 代码库 > 星号掩码算法
星号掩码算法
近期工作中一直再做支付相关的工作,遇到了快捷支付,绑定银行卡时用户输入4要素【姓名,手机号,身份证,银行卡号】,显示用户卡史的时候,要做掩码处理,
防止暴漏隐私,所以做了一个算法用星号替换重要数据,分享给大家。
** * 字符串转为*掩码的格式 * * @param str * @return */ public String convertToStart(String str) { String result = str; int len = str.length(); Map<Integer,String> mapRule=convertToStartRule(len); String ruleStr=mapRule.get(len); String[] ruleArr=ruleStr.split("\\|"); int frontIndex=Integer.parseInt( ruleArr[0]); int subLength=Integer.parseInt(ruleArr[1]); String frontStr= str.substring(0,frontIndex); String backStr=str.substring(frontIndex+subLength,len); result=frontStr+printStart(subLength)+backStr; return result; } /** * 指定长度的字符串转为*掩码 * @param len * @return */ private Map<Integer, String> convertToStartRule(int len) { Map<Integer, String> m = new HashMap<Integer, String>(); String indexRule =""; switch (len) { case 2: case 3: { indexRule="0|1"; break; } case 11: { indexRule="3|4"; break; } case 18: { indexRule="4|10"; break; } default:{ if(len>3) { int mol = len % 4; int s=len/4; indexRule=s+"|"+(2*s+mol); }else { indexRule="0|1"; } break; } } m.put(len,indexRule); return m; } /** * 打印指定长度星号 * @param length * @return */ public String printStart(int length){ StringBuilder start=new StringBuilder(); for(int i=0;i<length;i++){ start.append("*"); } return start.toString(); }
以下是为了凑字数,哈哈,祝大家工作顺利,心想事成,万事如意,合家欢乐,步步高升,平步青云,高高兴兴。
星号掩码算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。