首页 > 代码库 > 星号掩码算法

星号掩码算法

近期工作中一直再做支付相关的工作,遇到了快捷支付,绑定银行卡时用户输入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();    } 

以下是为了凑字数,哈哈,祝大家工作顺利,心想事成,万事如意,合家欢乐,步步高升,平步青云,高高兴兴。

星号掩码算法