国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

android銀行卡號驗證算法詳解

2019-12-12 00:32:12
字體:
來源:轉載
供稿:網友

現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的, 可能是發卡分行,發卡網點,發卡序號,第 16 位是校驗碼。

16 位卡號校驗位采用 Luhm 校驗方法計算:

1、將未帶校驗位的 15 位卡號從右依次編號 1 到 15,位于奇數位號上的數字乘以 2
2、將奇位乘積的個十位全部相加,再加上所有偶數位上的數字
3、將加法和加上校驗位能被 10 整除。

public class CheckIdCard {  /**   * 校驗銀行卡卡號   *   * @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("http://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');  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南江县| 喀喇沁旗| 额济纳旗| 西贡区| 青浦区| 固始县| 焦作市| 云阳县| 禹城市| 郴州市| 长葛市| 玉溪市| 双江| 安塞县| 彭阳县| 旬邑县| 绥江县| 淄博市| 岢岚县| 泰来县| 尖扎县| 盘锦市| 仁寿县| 博爱县| 紫金县| 乌什县| 繁峙县| 凌海市| 奉化市| 定南县| 获嘉县| 青神县| 乌兰察布市| 安陆市| 福建省| 吉木萨尔县| 仙桃市| 翁源县| 思南县| 江安县| 九龙县|