博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java校验银行卡号
阅读量:4551 次
发布时间:2019-06-08

本文共 1760 字,大约阅读时间需要 5 分钟。

1 public class CheckBankCard { 2     /* 3     校验过程:  4     1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。  5     2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。  6     3、将奇数位总和加上偶数位总和,结果应该可以被10整除。        7     */    8         /**  9         * 校验银行卡卡号 10         */  11        public static boolean checkBankCard(String bankCard) {  12                 if(bankCard.length() < 15 || bankCard.length() > 19) {13                     return false;14                 }15                 char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));  16                 if(bit == 'N'){  17                     return false;  18                 }  19                 return bankCard.charAt(bankCard.length() - 1) == bit;  20        }  21 22        /** 23         * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位 24         * @param nonCheckCodeBankCard 25         * @return 26         */  27        public static char getBankCardCheckCode(String nonCheckCodeBankCard){  28            if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0  29                    || !nonCheckCodeBankCard.matches("\\d+")) {  30                //如果传的不是数据返回N  31                return 'N';  32            }  33            char[] chs = nonCheckCodeBankCard.trim().toCharArray();  34            int luhmSum = 0;  35            for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {  36                int k = chs[i] - '0';  37                if(j % 2 == 0) {  38                    k *= 2;  39                    k = k / 10 + k % 10;  40                }  41                luhmSum += k;             42            }  43            return (luhmSum % 10 == 0) ? '0' : (char)((10 - luhmSum % 10) + '0');  44        }

 

转载于:https://www.cnblogs.com/walblog/articles/9284057.html

你可能感兴趣的文章
font-family
查看>>
首席数据官(CDO)的崛起
查看>>
nativemessaging chrome 插件 extension
查看>>
吴裕雄--天生自然 物理学习与探索笔记:行星运动、人造卫星与万有引力定律和功与能...
查看>>
每个人都有一对翅膀
查看>>
webots自学笔记(三)控制器与电机控制
查看>>
【翻译习作】 Windows Workflow Foundation程序开发-第一章01
查看>>
colorbox弹出层图片显示
查看>>
爬取中国福彩网并做可视化分析
查看>>
SMS,EMS PDU Code Decoder 短信PDU格式解码器
查看>>
edge不能上网-代码 INET_E_RESOURCE_NOT_FOUND
查看>>
LeetCode 题目 word break 思路剖析与改进
查看>>
理解js设计模式之策略模式
查看>>
2017.7.21 Linux中ELK服务后台运行方式
查看>>
Android Dev Guides
查看>>
Android 动画之ScaleAnimation应用详解
查看>>
稳定排序 和 不稳定排序 ::::::::::: 内排序和外排序
查看>>
nRF24L01P的ShockBurst与Enhance ShockBurst
查看>>
多/快/好 练习
查看>>
Centos下SFTP双机高可用环境部署记录
查看>>