ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:19.42KB ,
资源ID:5418459      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5418459.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(身份证号码18位与15位转换.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

身份证号码18位与15位转换.docx

1、身份证号码18位与15位转换身份证 18位与15位转换package ;import ;import ;import ;import ;import ;import ;import ;import ;/* * 身份证工具类 * author Kobe * version 2011-08-08 */public class IdcardUtils extends StringUtils /* 中国公民身份证号码最小长度。 */ public static final int CHINA_ID_MIN_LENGTH = 15; /* 中国公民身份证号码最大长度。 */ public static

2、final int CHINA_ID_MAX_LENGTH = 18; /* 省、直辖市代码表 */ public static final String cityCode = 11, 12, 13, 14, 15, 21, 22, 23, 31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 45, 46, 50, 51, 52, 53, 54, 61, 62, 63, 64, 65, 71, 81, 82, 91 ; /* 每位加权因子 */ public static final int power = 7, 9, 10, 5, 8, 4, 2, 1,

3、6, 3, 7, 9, 10, 5, 8, 4, 2 ; /* 第18位校检码 */ public static final String verifyCode = 1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2 ; /* 最低年限 */ public static final int MIN = 1930; public static Map cityCodes = new HashMap(); /* 台湾身份首字母对应数字 */ public static Map twFirstCode = new HashMap(); /* 香港身份首字母对应数字 */ public s

4、tatic Map hkFirstCode = new HashMap(); static cityCodes.put(11, 北京); cityCodes.put(12, 天津); cityCodes.put(13, 河北); cityCodes.put(14, 山西); cityCodes.put(15, 内蒙古); cityCodes.put(21, 辽宁); cityCodes.put(22, 吉林); cityCodes.put(23, 黑龙江); cityCodes.put(31, 上海); cityCodes.put(32, 江苏); cityCodes.put(33, 浙江);

5、 cityCodes.put(34, 安徽); cityCodes.put(35, 福建); cityCodes.put(36, 江西); cityCodes.put(37, 山东); cityCodes.put(41, 河南); cityCodes.put(42, 湖北); cityCodes.put(43, 湖南); cityCodes.put(44, 广东); cityCodes.put(45, 广西); cityCodes.put(46, 海南); cityCodes.put(50, 重庆); cityCodes.put(51, 四川); cityCodes.put(52, 贵州);

6、cityCodes.put(53, 云南); cityCodes.put(54, 西藏); cityCodes.put(61, 陕西); cityCodes.put(62, 甘肃); cityCodes.put(63, 青海); cityCodes.put(64, 宁夏); cityCodes.put(65, 新疆); cityCodes.put(71, 台湾); cityCodes.put(81, 香港); cityCodes.put(82, 澳门); cityCodes.put(91, 国外); twFirstCode.put(A, 10); twFirstCode.put(B, 11);

7、 twFirstCode.put(C, 12); twFirstCode.put(D, 13); twFirstCode.put(E, 14); twFirstCode.put(F, 15); twFirstCode.put(G, 16); twFirstCode.put(H, 17); twFirstCode.put(J, 18); twFirstCode.put(K, 19); twFirstCode.put(L, 20); twFirstCode.put(M, 21); twFirstCode.put(N, 22); twFirstCode.put(P, 23); twFirstCode

8、.put(Q, 24); twFirstCode.put(R, 25); twFirstCode.put(S, 26); twFirstCode.put(T, 27); twFirstCode.put(U, 28); twFirstCode.put(V, 29); twFirstCode.put(X, 30); twFirstCode.put(Y, 31); twFirstCode.put(W, 32); twFirstCode.put(Z, 33); twFirstCode.put(I, 34); twFirstCode.put(O, 35); hkFirstCode.put(A, 1);

9、hkFirstCode.put(B, 2); hkFirstCode.put(C, 3); hkFirstCode.put(R, 18); hkFirstCode.put(U, 21); hkFirstCode.put(Z, 26); hkFirstCode.put(X, 24); hkFirstCode.put(W, 23); hkFirstCode.put(O, 15); hkFirstCode.put(N, 14); /* * 将15位身份证号码转换为18位 * param idCard * 15位身份编码 * return 18位身份编码 */ public static String

10、 conver15CardTo18(String idCard) String idCard18 = ; if (idCard.length() != CHINA_ID_MIN_LENGTH) return null; if (isNum(idCard) / 获取出生年月日 String birthday = idCard.substring(6, 12); Date birthDate = null; try birthDate = new SimpleDateFormat(yyMMdd).parse(birthday); catch (ParseException e) e.printSt

11、ackTrace(); Calendar cal = Calendar.getInstance(); if (birthDate != null) cal.setTime(birthDate); / 获取出生年(完全表现形式,如:2010) String sYear = String.valueOf(cal.get(Calendar.YEAR); idCard18 = idCard.substring(0, 6) + sYear + idCard.substring(8); / 转换字符数组 char cArr = idCard18.toCharArray(); if (cArr != nul

12、l) int iCard = converCharToInt(cArr); int iSum17 = getPowerSum(iCard); / 获取校验位 String sVal = getCheckCode18(iSum17); if (sVal.length() 0) idCard18 += sVal; else return null; else return null; return idCard18; /* * 将18位身份证号码转换为15位 * param idCard * 18位身份编码 * return 15位身份编码 */ public static String conv

13、er18CardTo15(String idCard) String idCard15 = ; if (idCard.length() != CHINA_ID_MAX_LENGTH) return null; StringBuffer sb = new StringBuffer(idCard); sb.deleteCharAt(17); sb.deleteCharAt(7); sb.deleteCharAt(6); idCard15 = sb.toString(); return idCard15; /* * 验证身份证是否合法 */ public static boolean validat

14、eCard(String idCard) String card = idCard.trim(); if (validateIdCard18(card) return true; if (validateIdCard15(card) return true; String cardval = validateIdCard10(card); if (cardval != null) if (cardval2.equals(true) return true; return false; /* * 验证18位身份编码是否合法 * * param idCard 身份编码 * return 是否合法

15、*/ public static boolean validateIdCard18(String idCard) boolean bTrue = false; if (idCard.length() = CHINA_ID_MAX_LENGTH) / 前17位 String code17 = idCard.substring(0, 17); / 第18位 String code18 = idCard.substring(17, CHINA_ID_MAX_LENGTH); if (isNum(code17) char cArr = code17.toCharArray(); if (cArr !=

16、 null) int iCard = converCharToInt(cArr); int iSum17 = getPowerSum(iCard); / 获取校验位 String val = getCheckCode18(iSum17); if (val.length() 0) if (val.equalsIgnoreCase(code18) bTrue = true; return bTrue; /* * 验证15位身份编码是否合法 * * param idCard * 身份编码 * return 是否合法 */ public static boolean validateIdCard15(

17、String idCard) if (idCard.length() != CHINA_ID_MIN_LENGTH) return false; if (isNum(idCard) String proCode = idCard.substring(0, 2); if (cityCodes.get(proCode) = null) return false; String birthCode = idCard.substring(6, 12); Date birthDate = null; try birthDate = new SimpleDateFormat(yy).parse(birth

18、Code.substring(0, 2); catch (ParseException e) e.printStackTrace(); Calendar cal = Calendar.getInstance(); if (birthDate != null) cal.setTime(birthDate); if (!valiDate(cal.get(Calendar.YEAR), Integer.valueOf(birthCode.substring(2, 4), Integer.valueOf(birthCode.substring(4, 6) return false; else retu

19、rn false; return true; /* * 验证10位身份编码是否合法 * * param idCard 身份编码 * return 身份证信息数组 * * 0 - 台湾、澳门、香港 1 - 性别(男M,女F,未知N) 2 - 是否合法(合法true,不合法false) * 若不是身份证件号码则返回null * */ public static String validateIdCard10(String idCard) String info = new String3; String card = idCard.replaceAll(|), ); if (card.length

20、() != 8 & card.length() != 9 & idCard.length() != 10) return null; if (idCard.matches(a-zA-Z0-99$) / 台湾 info0 = 台湾; 11111); String char2 = idCard.substring(1, 2); if (char2.equals(1) info1 = M; MMMMMMM); else if (char2.equals(2) info1 = F; FFFFFFF); else info1 = N; info2 = false; NNNN); return info;

21、 info2 = validateTWCard(idCard) ? true : false; else if (idCard.matches(1|5|70-96(?0-9A-Z)?$) / 澳门 info0 = 澳门; info1 = N; / TODO else if (idCard.matches(A-Z1,20-96(?0-9A)?$) / 香港 info0 = 香港; info1 = N; info2 = validateHKCard(idCard) ? true : false; else return null; return info; /* * 验证台湾身份证号码 * * p

22、aram idCard * 身份证号码 * return 验证码是否符合 */ public static boolean validateTWCard(String idCard) String start = idCard.substring(0, 1); String mid = idCard.substring(1, 9); String end = idCard.substring(9, 10); Integer iStart = twFirstCode.get(start); Integer sum = iStart / 10 + (iStart % 10) * 9; char c

23、hars = mid.toCharArray(); Integer iflag = 8; for (char c : chars) sum = sum + Integer.valueOf(c + ) * iflag; iflag-; return (sum % 10 = 0 ? 0 : (10 - sum % 10) = Integer.valueOf(end) ? true : false; /* * 验证香港身份证号码(存在Bug,部份特殊身份证无法检查) * * 身份证前2位为英文字符,如果只出现一个英文字符则表示第一位是空格,对应数字58 前2位英文字符A-Z分别对应数字10-35 *

24、 最后一位校验码为0-9的数字加上字符A,A代表10 * * * 将身份证号码全部转换为数字,分别对应乘9-1相加的总和,整除11则证件号码有效 * * * param idCard 身份证号码 * return 验证码是否符合 */ public static boolean validateHKCard(String idCard) String card = idCard.replaceAll(|), ); Integer sum = 0; if (card.length() = 9) sum = (Integer.valueOf(card.substring(0, 1).toUpper

25、Case().toCharArray()0) - 55) * 9 + (Integer.valueOf(card.substring(1, 2).toUpperCase().toCharArray()0) - 55) * 8; card = card.substring(1, 9); else sum = 522 + (Integer.valueOf(card.substring(0, 1).toUpperCase().toCharArray()0) - 55) * 8; String mid = card.substring(1, 7); String end = card.substrin

26、g(7, 8); char chars = mid.toCharArray(); Integer iflag = 7; for (char c : chars) sum = sum + Integer.valueOf(c + ) * iflag; iflag-; if (end.toUpperCase().equals(A) sum = sum + 10; else sum = sum + Integer.valueOf(end); return (sum % 11 = 0) ? true : false; /* * 将字符数组转换成数字数组 * * param ca * 字符数组 * ret

27、urn 数字数组 */ public static int converCharToInt(char ca) int len = ca.length; int iArr = new intlen; try for (int i = 0; i len; i+) iArri = Integer.parseInt(String.valueOf(cai); catch (NumberFormatException e) e.printStackTrace(); return iArr; /* * 将身份证的每位和对应位的加权因子相乘之后,再得到和值 * * param iArr * return 身份证编码。 */ public static int getPowerSum(int iArr) int iSum = 0; if (power.length = iArr.length) for (int i = 0; i iArr.length; i+) for (int j = 0; j power.le

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1