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

首頁 > 系統 > Android > 正文

android銀行卡號驗證算法詳解

2019-10-21 21:39:10
字體:
來源:轉載
供稿:網友

現行 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("//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');  }}

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 察隅县| 新巴尔虎左旗| 安西县| 灵武市| 珠海市| 巴塘县| 浙江省| 中山市| 东源县| 漯河市| 侯马市| 东城区| 基隆市| 通州市| 景宁| 囊谦县| 长治县| 会同县| 历史| 沾益县| 高碑店市| 丽水市| 宜丰县| 湖南省| 平邑县| 饶阳县| 麟游县| 寿阳县| 荆门市| 和硕县| 青海省| 陇西县| 普兰店市| 弥渡县| 洛川县| 宁德市| 潢川县| 屯门区| 鲜城| 乌苏市| 庆阳市|