身份证验证

来源:互联网 发布:佰诺网络 编辑:程序博客网 时间:2024/03/29 15:07
  1. package com.eshore.sweetop.sort;
  2. /**
  3.  * Class IDCard
  4.  * @author wudongdong
  5.  * IDCard.java    
  6.  * Dec 4, 2008
  7.  */
  8. public class IDCard {
  9.     // wi =2(n-1)(mod 11)
  10.     final int[] wi = { 79105842163791058421 };
  11.     // verify digit
  12.     final int[] vi = { 10'X'98765432 };
  13.     private int[] ai = new int[18];
  14.     /**
  15.      * 
  16.      */
  17.     public IDCard() {
  18.     }
  19.     public String uptoeighteen(String fifteencardid) {
  20.         String eightcardid = fifteencardid.substring(06);
  21.         eightcardid = eightcardid + "19";
  22.         eightcardid = eightcardid + fifteencardid.substring(615);
  23.         eightcardid = eightcardid + getVerify(eightcardid);
  24.         return eightcardid;
  25.     }
  26.     public String getVerify(String eightcardid) {
  27.         int remaining = 0;
  28.         if (eightcardid.length() == 18) {
  29.             eightcardid = eightcardid.substring(017);
  30.         }
  31.         if (eightcardid.length() == 17) {
  32.             int sum = 0;
  33.             for (int i = 0; i < 17; i++) {
  34.                 String k = eightcardid.substring(i, i + 1);
  35.                 ai[i] = Integer.parseInt(k);
  36.             }
  37.             for (int i = 0; i < 17; i++) {
  38.                 sum = sum + wi[i] * ai[i];
  39.             }
  40.             remaining = sum % 11;
  41.         }
  42.         return remaining == 2 ? "X" : String.valueOf(vi[remaining]);
  43.     }
  44.     public boolean verify(String idcard) {
  45.         if (idcard.length() == 15) {
  46.             idcard = uptoeighteen(idcard);
  47.         }
  48.         if (idcard.length() != 18) {
  49.             return false;
  50.         }
  51.         String verify = idcard.substring(1718);
  52.         if (verify.equals(getVerify(idcard))) {
  53.             return true;
  54.         }
  55.         return false;
  56.     }
  57.     public static void main(String[] args) {
  58.         IDCard id=new IDCard();
  59.         boolean ver=id.verify("140581198111117214");
  60.         System.out.println(ver);
  61.     }
  62. }
原创粉丝点击