隨筆-71  評論-5  文章-0  trackbacks-0
            /**
                   * 校驗銀行卡卡號
                   * 
          @param cardId
                   * 
          @return
                   
          */
                  public static boolean checkBankCard(String cardId) {
                           char bit = getBankCardCheckCode(cardId.substring(0, cardId.length() - 1));
                           if(bit == 'N'){
                               return false;
                           }
                           return cardId.charAt(cardId.length() - 1) == bit;
                  }
                 
                  /**
                   * 從不含校驗位的銀行卡卡號采用 Luhm 校驗算法獲得校驗位
                   * 
          @param nonCheckCodeCardId
                   * 
          @return
                   
          */
                  public static char getBankCardCheckCode(String nonCheckCodeCardId){
                      if(nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0
                              || !nonCheckCodeCardId.matches("\\d+")) {
                          //如果傳的不是數據返回N
                          return 'N';
                      }
                      char[] chs = nonCheckCodeCardId.trim().toCharArray();
                      int luhmSum = 0;
                      for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
                          int k = chs[i] - '0';
                          if(j % 2 == 0) {
                              k *= 2;
                              k = k / 10 + k % 10;
                          }
                          luhmSum += k;           
                      }
                      return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0');
                  }



             //   測試代碼


          public class ResTest {
          public static void main(String[] args) {
             String reg = "18632116655";
             String data = JsonUtil.toJson(reg);
             String post = HttpClient.post("http://192.168.199.127:8067/openapi/rest/hometop/homeinfo", AESUtil.encrypt(data));
             System.out.println(post);
             System.out.println(AESUtil.decrypt(post));
          }
          }











          /**
          * author:qiaoyongjun
          * StrNo:用戶輸入的身份證件號碼
          * _id:用來承載錯誤信息的控件ID號,用來進行友好提示
          *判斷身份證號碼格式函數
          *公民身份號碼是特征組合碼,
          *排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼
          *如果驗證通過 返回 true
          */
          function isChinaIDCard(StrNo, _Id) {
          var error = document.getElementById(_Id);
          StrNo = StrNo.toString();
          if (StrNo.length == 15) {
          if (!isValidDate("19" + StrNo.substr(6, 2), StrNo.substr(8, 2),
          StrNo.substr(10, 2), _Id)) {
          return false;
          }
          } else if (StrNo.length == 18) {
          if (!isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo
          .substr(12, 2), _Id)) {
          return false;
          }
          } else {
          error.innerHTML = "";
          error.innerHTML = "輸入的身份證號碼必須為15位或者18位!";
          return false;
          }
          if (StrNo.length == 18) {
          var a, b, c
          if (!isNumber(StrNo.substr(0, 17))) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼錯誤,前17位不能含有英文字母!";
          return false;
          }
          a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1))
          * 9 + parseInt(StrNo.substr(2, 1)) * 10;
          a = a + parseInt(StrNo.substr(3, 1)) * 5
          + parseInt(StrNo.substr(4, 1)) * 8
          + parseInt(StrNo.substr(5, 1)) * 4;
          a = a + parseInt(StrNo.substr(6, 1)) * 2
          + parseInt(StrNo.substr(7, 1)) * 1
          + parseInt(StrNo.substr(8, 1)) * 6;
          a = a + parseInt(StrNo.substr(9, 1)) * 3
          + parseInt(StrNo.substr(10, 1)) * 7
          + parseInt(StrNo.substr(11, 1)) * 9;
          a = a + parseInt(StrNo.substr(12, 1)) * 10
          + parseInt(StrNo.substr(13, 1)) * 5
          + parseInt(StrNo.substr(14, 1)) * 8;
          a = a + parseInt(StrNo.substr(15, 1)) * 4
          + parseInt(StrNo.substr(16, 1)) * 2;
          b = a % 11;
          if (b == 2) //最后一位為校驗位  
          {
          c = StrNo.substr(17, 1).toUpperCase(); //轉為大寫X  
          } else {
          c = parseInt(StrNo.substr(17, 1));
          }
          switch (b) {
          case 0:
          if (c != 1) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:1";
          return false;
          }
          break;
          case 1:
          if (c != 0) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:0";
          return false;
          }
          break;
          case 2:
          if (c != "X") {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:X";
          return false;
          }
          break;
          case 3:
          if (c != 9) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:9";
          return false;
          }
          break;
          case 4:
          if (c != 8) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:8";
          return false;
          }
          break;
          case 5:
          if (c != 7) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:7";
          return false;
          }
          break;
          case 6:
          if (c != 6) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:6";
          return false;
          }
          break;
          case 7:
          if (c != 5) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:5";
          return false;
          }
          break;
          case 8:
          if (c != 4) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:4";
          return false;
          }
          break;
          case 9:
          if (c != 3) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:3";
          return false;
          }
          break;
          case 10:
          if (c != 2) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼校驗位錯:最后一位應該為:2";
          return false;
          }
          }
          } else {//15位身份證號  
          if (!isNumber(StrNo)) {
          error.innerHTML = "";
          error.innerHTML = "身份證號碼錯誤,前15位不能含有英文字母!";
          return false;
          }
          }
          return true;
          }
          /**
          * 驗證身份證件中的日期是否合法有效
          * @param iY
          * @param iM
          * @param iD
          * @param _id
          * @return
          */
          function isValidDate(iY, iM, iD, _id) {
          if (iY > 2200 || iY < 1900 || !isNumber(iY)) {
          document.getElementById(_id).innerHTML = "";
          document.getElementById(_id).innerHTML = "輸入身份證號,年度" + iY + "非法!";
          return false;
          }
          if (iM > 12 || iM <= 0 || !isNumber(iM)) {
          document.getElementById(_id).innerHTML = "";
          document.getElementById(_id).innerHTML = "輸入身份證號,月份" + iM + "非法!";
          return false;
          }
          if (iD > 31 || iD <= 0 || !isNumber(iD)) {
          document.getElementById(_id).innerHTML = "";
          document.getElementById(_id).innerHTML = "輸入身份證號,日期" + iD + "非法!";
          return false;
          }
          return true;
          }
          /**
          * 驗證是否為數字
          * @param oNum
          * @return
          */
          function isNumber(oNum) {
          if (!oNum)
          return false;
          var strP = /^\d+(\.\d+)?$/;
          if (!strP.test(oNum))
          return false;
          try {
          if (parseFloat(oNum) != oNum)
          return false;
          } catch (ex) {
          return false;
          }
          return true;
          }
          posted on 2014-12-21 22:09 藤本薔薇 閱讀(1767) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          主站蜘蛛池模板: 永胜县| 凭祥市| 巧家县| 六枝特区| 桂阳县| 永清县| 勃利县| 新郑市| 株洲市| 洪湖市| 临桂县| 临武县| 绿春县| 左贡县| 海丰县| 鄢陵县| 扶余县| 富蕴县| 资源县| 行唐县| 博爱县| 商南县| 安图县| 三穗县| 密云县| 黄梅县| 渭南市| 平山县| 彰武县| 渑池县| 资源县| 南溪县| 得荣县| 白朗县| 临漳县| 舒兰市| 原平市| 商都县| 金山区| 陵川县| 高雄县|