Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159438
  • 博文数量: 56
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 593
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-18 09:59
文章分类

全部博文(56)

文章存档

2019年(1)

2018年(26)

2016年(1)

2015年(6)

2014年(22)

我的朋友

分类: Java

2018-06-29 12:21:09


进行脱敏处理的时候很有用
包含:
  • 手机号加密
  • 姓名加密,只适用于中国姓名
  • 邮箱加密, 加密规则:w@mail.com、w*@mail.com、w**@mail.com、web**@mail.com
  • 中国身份证加密  加密规则:421002**********34

点击(此处)折叠或打开

  1. /**
  2.  * 
  3.  * 统一加密规则
  4.  */
  5. public class NumberEncryptUtil {

  6.     private static final Logger logger = LoggerFactory.getLogger(NumberEncryptUtil.class);

  7.     /**
  8.      * 手机号加密
  9.      * 加密规则:139****6631
  10.      *
  11.      * @param mobile
  12.      * @return
  13.      */
  14.     public static String mobileEncrypt(String mobile) {
  15.         if (StringUtils.isEmpty(mobile)) return "";

  16.         String prefix = "";
  17.         try {
  18.             if (mobile.length() >= 3) {
  19.                 prefix = mobile.substring(0, 3);
  20.             } else {
  21.                 prefix = mobile.substring(0, mobile.length());
  22.             }

  23.             //按中国手机号码来进行处理
  24.             String middle = "****";

  25.             String suffix = "";
  26.             int surplus = mobile.length() - prefix.length() - middle.length();
  27.             if (surplus > 0) {
  28.                 int startIndex = prefix.length() + middle.length();
  29.                 suffix = mobile.substring(startIndex);
  30.             }

  31.             return prefix + middle + suffix;
  32.         } catch (Exception e) {
  33.             logger.error(
  34.                     String.format("mobile encrypt fail, param:%s, errorMsg:%s", mobile, e.getMessage()), e
  35.             );
  36.             return "";
  37.         }
  38.     }

  39.     /**
  40.      * 姓名加密,只适用于中国姓名
  41.      * 加密规则:*名/**
  42.      *
  43.      * @param name
  44.      * @return
  45.      */
  46.     public static String nameEncrypt(String name) {
  47.         if (StringUtils.isEmpty(name)) return "";
  48.         String familyName = "赵 钱 孙 李 周 吴 郑 王 冯 陈 褚 卫 " +
  49.                 "蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 " +
  50.                 "孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 喻 " +
  51.                 "柏 水 窦 章 云 苏 潘 葛 奚 范 彭 郎 " +
  52.                 "鲁 韦 昌 马 苗 凤 花 方 俞 任 袁 柳 " +
  53.                 "酆 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 " +
  54.                 "滕 殷 罗 毕 郝 邬 安 常 乐 于 时 傅 " +
  55.                 "皮 卞 齐 康 伍 余 元 卜 顾 孟 平 黄 " +
  56.                 "和 穆 萧 尹 姚 邵 湛 汪 祁 毛 禹 狄 " +
  57.                 "米 贝 明 臧 计 伏 成 戴 谈 宋 茅 庞 " +
  58.                 "熊 纪 舒 屈 项 祝 董 梁 杜 阮 蓝 闵 " +
  59.                 "席 季 麻 强 贾 路 娄 危 江 童 颜 郭 " +
  60.                 "梅 盛 林 刁 锺 徐 邱 骆 高 夏 蔡 田 " +
  61.                 "樊 胡 凌 霍 虞 万 支 柯 昝 管 卢 莫 " +
  62.                 "经 房 裘 缪 干 解 应 宗 丁 宣 贲 邓 " +
  63.                 "郁 单 杭 洪 包 诸 左 石 崔 吉 钮 龚 " +
  64.                 "程 嵇 邢 滑 裴 陆 荣 翁 荀 羊 於 惠 " +
  65.                 "甄 麴 家 封 芮 羿 储 靳 汲 邴 糜 松 " +
  66.                 "井 段 富 巫 乌 焦 巴 弓 牧 隗 山 谷 " +
  67.                 "车 侯 宓 蓬 全 郗 班 仰 秋 仲 伊 宫 " +
  68.                 "宁 仇 栾 暴 甘 钭 历 戎 祖 武 符 刘 " +
  69.                 "景 詹 束 龙 叶 幸 司 韶 郜 黎 蓟 溥 " +
  70.                 "印 宿 白 怀 蒲 邰 从 鄂 索 咸 籍 赖 " +
  71.                 "卓 蔺 屠 蒙 池 乔 阳 郁 胥 能 苍 双 " +
  72.                 "闻 莘 党 翟 谭 贡 劳 逄 姬 申 扶 堵 " +
  73.                 "冉 宰 郦 雍 却 璩 桑 桂 濮 牛 寿 通 " +
  74.                 "边 扈 燕 冀 僪 浦 尚 农 温 别 庄 晏 " +
  75.                 "柴 瞿 阎 充 慕 连 茹 习 宦 艾 鱼 容 " +
  76.                 "向 古 易 慎 戈 廖 庾 终 暨 居 衡 步 " +
  77.                 "都 耿 满 弘 匡 国 文 寇 广 禄 阙 东 " +
  78.                 "欧 殳 沃 利 蔚 越 夔 隆 师 巩 厍 聂 " +
  79.                 "晁 勾 敖 融 冷 訾 辛 阚 那 简 饶 空 " +
  80.                 "曾 毋 沙 乜 养 鞠 须 丰 巢 关 蒯 相 " +
  81.                 "查 后 荆 红 游 竺 权 逮 盍 益 桓 公 " +
  82.                 "万俟 司马 上官 欧阳 夏侯 诸葛 闻人 东方 赫连 皇甫 尉迟 公羊 " +
  83.                 "澹台 公冶 宗政 濮阳 淳于 单于 太叔 申屠 公孙 仲孙 轩辕 令狐 " +
  84.                 "钟离 宇文 长孙 慕容 司徒 司空 召 有 舜 叶赫那拉 丛 岳 " +
  85.                 "寸 贰 皇 侨 彤 竭 端 赫 实 甫 集 象 " +
  86.                 "翠 狂 辟 典 良 函 芒 苦 其 京 中 夕 " +
  87.                 "之 章佳 那拉 冠 宾 香 果 依尔根觉罗 依尔觉罗 萨嘛喇 赫舍里 额尔德特 " +
  88.                 "萨克达 钮祜禄 他塔喇 喜塔腊 讷殷富察 叶赫那兰 库雅喇 瓜尔佳 舒穆禄 爱新觉罗 索绰络 纳喇 " +
  89.                 "乌雅 范姜 碧鲁 张廖 张简 图门 太史 公叔 乌孙 完颜 马佳 佟佳 " +
  90.                 "富察 费莫 蹇 称 诺 来 多 繁 戊 朴 回 毓 鉏(chi) " +
  91.                 "税 荤 靖 绪 愈 硕 牢 买 但 巧 枚 撒 " +
  92.                 "泰 秘 亥 绍 以 壬 森 斋 释 奕 姒 朋 " +
  93.                 "求 羽 用 占 真 穰 翦 闾 漆 贵 代 贯 " +
  94.                 "旁 崇 栋 告 休 褒 谏 锐 皋 闳 在 歧 " +
  95.                 "禾 示 是 委 钊 频 嬴 呼 大 威 昂 律 " +
  96.                 "冒 保 系 抄 定 化 莱 校 么 抗 祢 綦 " +
  97.                 "悟 宏 功 庚 务 敏 捷 拱 兆 丑 丙 畅 " +
  98.                 "苟 随 类 卯 俟 友 答 乙 允 甲 留 尾 " +
  99.                 "佼 玄 乘 裔 延 植 环 矫 赛 昔 侍 度 " +
  100.                 "旷 遇 偶 前 由 咎 塞 敛 受 泷 袭 衅 " +
  101.                 "叔 圣 御 夫 仆 镇 藩 邸 府 掌 首 员 " +
  102.                 "焉 戏 可 智 尔 凭 悉 进 笃 厚 仁 业 " +
  103.                 "肇 资 合 仍 九 衷 哀 刑 俎 仵 圭 夷 " +
  104.                 "徭 蛮 汗 孛 乾 帖 罕 洛 淦 洋 邶 郸 " +
  105.                 "郯 邗 邛 剑 虢 隋 蒿 茆 菅 苌 树 桐 " +
  106.                 "锁 钟 机 盘 铎 斛 玉 线 针 箕 庹 绳 " +
  107.                 "磨 蒉 瓮 弭 刀 疏 牵 浑 恽 势 世 仝 " +
  108.                 "同 蚁 止 戢 睢 冼 种 涂 肖 己 泣 潜 " +
  109.                 "卷 脱 谬 蹉 赧 浮 顿 说 次 错 念 夙 " +
  110.                 "斯 完 丹 表 聊 源 姓 吾 寻 展 出 不 " +
  111.                 "户 闭 才 无 书 学 愚 本 性 雪 霜 烟 " +
  112.                 "寒 少 字 桥 板 斐 独 千 诗 嘉 扬 善 " +
  113.                 "揭 祈 析 赤 紫 青 柔 刚 奇 拜 佛 陀 " +
  114.                 "弥 阿 素 长 僧 隐 仙 隽 宇 祭 酒 淡 " +
  115.                 "塔 琦 闪 始 星 南 天 接 波 碧 速 禚 " +
  116.                 "腾 潮 镜 似 澄 潭 謇 纵 渠 奈 风 春 " +
  117.                 "濯 沐 茂 英 兰 檀 藤 枝 检 生 折 登 " +
  118.                 "驹 骑 貊 虎 肥 鹿 雀 野 禽 飞 节 宜 " +
  119.                 "鲜 粟 栗 豆 帛 官 布 衣 藏 宝 钞 银 " +
  120.                 "门 盈 庆 喜 及 普 建 营 巨 望 希 道 " +
  121.                 "载 声 漫 犁 力 贸 勤 革 改 兴 亓 睦 " +
  122.                 "修 信 闽 北 守 坚 勇 汉 练 尉 士 旅 " +
  123.                 "五 令 将 旗 军 行 奉 敬 恭 仪 母 堂 " +
  124.                 "丘 义 礼 慈 孝 理 伦 卿 问 永 辉 位 " +
  125.                 "让 尧 依 犹 介 承 市 所 苑 杞 剧 第 " +
  126.                 "零 谌 招 续 达 忻 六 鄞 战 迟 候 宛 " +
  127.                 "励 粘 萨 邝 覃 辜 初 楼 城 区 局 台 " +
  128.                 "原 考 妫 纳 泉 老 清 德 卑 过 麦 曲 " +
  129.                 "竹 百 福 言 第五 佟 爱 年 笪 谯 哈 墨 连 " +
  130.                 "南宫 赏 伯 佴 佘 牟 商 西门 东门 左丘 梁丘 琴 " +
  131.                 "后 况 亢 缑 帅 微生 羊舌 海 归 呼延 南门 东郭 " +
  132.                 "百里 钦 鄢 汝 法 闫 楚 晋 谷梁 宰父 夹谷 拓跋 " +
  133.                 "壤驷 乐正 漆雕 公西 巫马 端木 颛孙 子车 督 仉 司寇 亓官 三小 " +
  134.                 "鲜于 锺离 盖 逯 库 郏 逢 阴 薄 厉 稽 闾丘 " +
  135.                 "公良 段干 开 光 操 瑞 眭 泥 运 摩 伟 铁 迮";
  136.         try {
  137.             String[] familyNameList = familyName.split(" ");
  138.             String prefix = "";
  139.             String suffix = "";
  140.             for (String item : familyNameList) {
  141.                 if (name.startsWith(item)) {
  142.                     prefix = "";
  143.                     suffix = name.substring(item.length());
  144.                     for (int i = 0; i < item.length(); i++) {
  145.                         prefix += "*";
  146.                     }
  147.                 }
  148.             }
  149.             return prefix + suffix;
  150.         } catch (Exception e) {
  151.             logger.error(
  152.                     String.format("mobile encrypt fail, param:%s, errorMsg:%s", name, e.getMessage()), e
  153.             );
  154.             return "";
  155.         }
  156.     }

  157.     /**
  158.      * 邮箱加密
  159.      * 加密规则:w@mail.com、w*@mail.com、w**@mail.com、web**@mail.com
  160.      *
  161.      * @param mail
  162.      * @return
  163.      */
  164.     public static String mailEncrypt(String mail) {
  165.         if (StringUtils.isEmpty(mail)) return "";

  166.         String prefix = "";
  167.         try {
  168.             if (mail.indexOf("@") > 3) {
  169.                 prefix = mail.substring(0, 3);
  170.             } else {
  171.                 prefix = mail.substring(0, 1);
  172.             }

  173.             String middle = "";
  174.             if (prefix.length() < mail.indexOf("@")) {
  175.                 for (int i = prefix.length(); i < mail.indexOf("@"); i++) {
  176.                     middle += "*";
  177.                 }
  178.             }

  179.             String suffix = mail.substring(mail.indexOf("@"));
  180.             return prefix + middle + suffix;
  181.         } catch (Exception e) {
  182.             logger.error(
  183.                     String.format("mobile encrypt fail, param:%s, errorMsg:%s", mail, e.getMessage()), e
  184.             );
  185.             return "";
  186.         }
  187.     }

  188.     /**
  189.      * 中国身份证加密
  190.      * 加密规则:421002**********34
  191.      *
  192.      * @return
  193.      */
  194.     public static String cardIdEncrypt(String cardId) {
  195.         if (StringUtils.isEmpty(cardId)) return "";
  196.         String prefix = "";
  197.         String middle = "";
  198.         try {
  199.             String suffix = cardId.substring(cardId.length() - 2);
  200.             if (cardId.length() > 6) {
  201.                 prefix = cardId.substring(0, 6);
  202.                 for (int i = 0; i < cardId.length() - 6 - 2; i++) {
  203.                     middle += "*";
  204.                 }
  205.                 return prefix + middle + suffix;
  206.             } else {
  207.                 prefix = cardId.substring(0, 3);
  208.                 for (int i = 0; i < cardId.length() - 3 - 2; i++) {
  209.                     middle += "*";
  210.                 }
  211.             }
  212.             return prefix + middle + suffix;
  213.         } catch (Exception e) {
  214.             logger.error(
  215.                     String.format("mobile encrypt fail, param:%s, errorMsg:%s", cardId, e.getMessage()), e
  216.             );
  217.             return "";
  218.         }
  219.     }
  220. }

阅读(8794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~