`
liuzhiqiang19890403
  • 浏览: 56884 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

验证用户输入是否是正确的银行卡号

 
阅读更多

验是否为银行卡,用于验证现行 16 位银联卡现行卡号开头 6 位是 622126~622925 之间的,7 到 15位是银行自定义的,可能是发卡分行,发卡网点,发卡序号,第 16 位是校验码。

 

package test;

 

public class BankCardTest {

public static void main(String[] args) {

        String card = "6227007200120897790";

        System.out.println("      card: " + card);

        System.out.println("check code: " + getBankCardCheckCode(card));

        System.out.println("是否为银行卡:"+checkBankCard(card));

    }

 

    /**

     * 校验银行卡卡号

     * @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');

    }

 

}

 

摘自:http://outofmemory.cn/code-snippet/920/yanzheng-user-out-shifoushi-zhengque-yinxingqia-hao

分享到:
评论

相关推荐

    判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

    下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** * 银行卡格式校验 * * @param cardNo 银行卡号 * * @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum =...

    模拟银行的自动取款机使用过程中的界面和用户交互过程 实现查询银行卡余额、取款、修改密码、退出系统等功能

    实现查询银行卡余额、取款、修改密码、退出系统等功能。 (1)卡号、密码输入最多三次,否则直接退出系统。 (2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。 (3)查询功能:实现查询...

    基于java开发的转账项目开发源码

    一、主要功能点 APP 项目实践 用户注册、用户登录、开户、绑卡、交易记录。...必须完成开户并绑卡操作后才能进行转账等操作。 二、主要技术 ...1、银行卡号 必填 2、图形验证码 篇幅要求写不完 包含的功能了

    java课程设计-自动取款机模拟程序

    (1)客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作; (2)登陆后,用户可以进行查询余额、取款、存款和修改密码的操作; (3)修改密码时,用户需输入两次新密码,确定无误后方可...

    Java实现自动取款机模拟程序

    (1) 客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作; (2) 登陆后,用户可以进行查询余额、取款、存款和修改密码的操作; (3) 修改密码时,用户需输入两次新密码,确定无误后方可...

    大学java自动取款机模拟程序

    (1) 客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作; (2) 登陆后,用户可以进行查询余额、取款、存款和修改密码的操作; (3) 修改密码时,用户需输入两次新密码,确定无误后方可...

    java 银行管理系统 开发文档 程序源码

    (3)用户登录首先输入卡号和密码,通过读取文件用户信息验证,验证通过显示操作界面,然后选择存款或取款及余额查询,系统会自动进行各种计算,最后将信息保存到文件中; (4)存款及取款要有输入验证,输入金额不...

    ATM自动取款机系统分析与设计(计算机本科毕业设计-UML建模)

    (1)客户将银行卡插入读卡器,读卡器识别卡的真伪,并在显示器上提示输入密码。 (2)客户通过键盘输入密码,取款机验证密码是否有效。如果密码错误提示错误信息,如果正确,提示客户进行选择操作的业务。 (3)...

    基于c#的理财信息管理系统(源码+数据库+exe可执行程序+需求分析文档).zip

    该模块主要记录用户成员各银行卡存取信息。每条存取信息包括:银行卡开启姓名、银行卡账号、银行开户时间、银行卡内金额。 该模块还有添加银行卡信息,删除信息等功能。 借贷管理模块: 该模块主要记录用户借入出...

    模拟ATM机存取款管理系统设计.rar

    (1)显示界面和用户交互过程:界面包括输入卡号和密码、查询银行卡余额、取款、修改密码、锁卡、退出系统等功能。 (2)输入卡号和密码功能。 (3)对卡号、密码进行核实:卡号、密码最多输入三次,否则直接退出...

    java实现“模拟ATM机存取款管理系统”课程设计.txt

    实现查询银行卡余额、取款、存款、修改密码、退出系统等功能。 功能要求: (1)卡号、密码输入最多三次,否则直接退出系统。 (2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。 (3)...

    兰大计算机安全技术离线作业答案.docx

    专家表示,目前银行卡信息盗取、买卖等已形成黑色产业链,许多互联网企业由于在安全防范上存在漏洞,沦为"黑客"和不法分子盗取用户信息的主要渠道,给金融安全带来重大危害和隐患,对此需采取措施加以完善。...

    自动售货机的内部嵌入式系统

    本手册是为使用自动售货机软件的用户而写,旨在帮助用户正确使用该软件。 2.软件概述 2.1 目标 该软件适用于自动售货机的内部嵌入式系统。 2.2功能 提供人机交互的界面;计算用户所选商品的总价;验证账户的...

    Labview ATM机模拟操作系统.rar

    ATM控制器应释放卡模拟器按钮以指示ATM卡的返回,禁用用户输入控制,并终止应用程序。 ATM账户文件规范: 1、该文件应该是一个文本文件,包含逗号分隔值(CSV)格式的ATM帐户信息。该文件应位于主VI的同一文件夹中。...

    连连银通支付WEB-DEMO开发包

    2.2.3、用户签约信息查询API接口 //可根据用户号查询用户签约绑定的银行卡和对应协议号 2.2.1、银行卡解约接口 //可根据协议号进行解绑卡 3、常见问题 3.1、1003 风控拦截 风控拦截是我们公司风控部门...

    公交卡设计方案.pdf

    领公交卡:前台执行公交卡领卡,通过读写器读入华夏卡卡号(后 12位是公交卡卡号),输入是否收取押金(业务人员判断是否收押 金,若为新卡领卡则收取押金、若为换卡且旧卡人为损坏则收取押 金、若为换卡且旧卡非人...

    ATM程序设计.rar

    实现查询银行卡 余额、取款、修改密码、退出系统等功能。 (1)卡号、密码输入最多三次,否则直接退出系统。 (2)取款功能:取款金额受卡余额、及单笔最大取款金额及当前剩余金额 的限制。 (3)查询功能:实现...

    大数据中数据的质量问题探析.pdf

    例如, 某用户在使用支 付宝绑定银行卡时, 网站要求验证用户的真实姓名和身 份证号码.如果用户提供的证件号码与实际号码一致, 那么该号码存储在数据库中的值就是正确的. 数据的不准确由如下原因造成: 一 是 在 收 集 ...

    基于C#的模拟ATM系统_毕业设计

    它是一种高度精密的机电一体化设备,利用磁卡或智能IC卡储存用户信息并通过加密键盘(EPP)输入密码然后通过银行内部网络验证并进行各种交易的金融自助设备。ATM的功能主要包括:现金取款、现金存款、现金存取款、...

Global site tag (gtag.js) - Google Analytics