Java校验银行卡是否正确的核心代码

多说无益,贴代码:

/**
   * 校验银行卡卡号
   *
   * @param cardId
   * @return
   */
  public static boolean checkBankCard(String cardId) {
    char bit = getBankCardCheckCode(cardId
        .substring(0, cardId.length() - 1));
    return cardId.charAt(cardId.length() - 1) == bit;
  }
  /**
   * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
   *
   * @param nonCheckCodeCardId
   * @return
   */
  public static char getBankCardCheckCode(String nonCheckCodeCardId) {
    int cardLenth = nonCheckCodeCardId.trim().length();
    if (nonCheckCodeCardId == null || cardLenth == 0
        || !nonCheckCodeCardId.matches("\\d+")) {
      throw new IllegalArgumentException("不是银行卡的卡号!");
    }
    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');
  } 

感觉这个复制过去即可...所以我也没深入研究.感觉浪费时间.

以上所述是小编给大家介绍的Java校验银行卡是否正确的核心代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

时间: 2017-01-17

Java struts2 validate用户登录校验功能实现

首先贴一下搭配的环境: 配置: Eclipse4.3.2 jdk1.7_45 Mysql 5.0+ 然后切入正题: 1.login.jsp 主要是使用OGNL 标签 也可使用html form表单,调用LoginAction.action,以post 方式传输. 在LoginaAction 经过判断,然后会有提示信息,需要用到 <s:fielderror/>来显示. <%@ taglib uri="/struts-tags" prefix="s"%

java使用正则表达校验手机号码示例(手机号码正则)

复制代码 代码如下: public static boolean isMobileNumber(String mobiles) {return Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[^1^4,\\D]))\\d{8}").matcher(mobiles).matches();}

java使用计算md5校验码方式比较两个文件是否相同

复制代码 代码如下: public class MD5Check {/*** 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合*/    protected char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };    protected  MessageDigest messa

java中文及特殊字符的校验方法

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 参考链接:Character.UnicodeBlock中cjk的说明详解 1.关于Character.UnicodeBlock的介绍 CJK的意思是"Chinese,Japanese,Korea"的简写 ,实际上就是指中日韩三国的象形文字的Unicode编码 Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS : 4E00-9FBF:Unicode 编码为 U+

利用Java正则表达式校验邮箱与手机号

主要是运用java.util.regex类. 复制代码 代码如下: import java.util.regex.Matcher; import java.util.regex.Pattern; public class CheckMobileAndEmail { /** * 验证邮箱地址是否正确 * @param email * @return */ public static boolean checkEmail(String email){ boolean flag = false; tr

java身份证合法性校验并提取身份证有效信息

java身份证合法性校验并获取身份证号有效信息,供大家参考,具体内容如下 java身份证合法性校验 /**身份证前6位[ABCDEF]为行政区划数字代码(简称数字码)说明(参考<GB/T 2260-2007 中华人民共和国行政区划代码>): * 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区). * 市(地区,自治州,盟).县(自治县.县级市.旗.自治旗.市辖区.林区.特区). 数字码码位结构从左至右的含义是: 第一层为AB两位代码表

Java基于正则实现的日期校验功能示例

本文实例讲述了Java基于正则实现的日期校验功能.分享给大家供大家参考,具体如下: private void checkDate() throws IOException { // 4种分隔符 String sep = "[-\\./_]"; // 年份 String strPattern = "^(19[4-9]\\d|20\\d{2})" + sep; strPattern += "("; // 月(1,3,5,7,8,10,12) strP

JAVA 18位身份证号码校验码的算法

public static char doVerify(String id) { char pszSrc[]=id.toCharArray(); int iS = 0; int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; char szVerCode[] = new char[]{'1','0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; int i; for(i=0;i

java自定义注解实现前后台参数校验的实例

其实是可以通过@Constraint来限定自定义注解的方法. @Constraint(validatedBy = xxxx.class) 下面是我做的 java自定义注解实现前后台参数校验 的代码示例 对这个感兴趣的,请好好看,好好学: package sonn.sonnannotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.anno

java累加和校验实现方式16进制(推荐)

已知一个字符串,求该字符串的16进制累加和,已知一段字符串和校验码,校验和累加是否合法,话不多说了直接上代码 public static String makeChecksum(String data) { if (data == null || data.equals("")) { return ""; } int total = 0; int len = data.length(); int num = 0; while (num < len) { Str

java中进制的转换,Byte与16进制的转换方法

java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十进制转成十六进制: String Integer.toHexString(int i) 十进制转成八进制 String Integer.toOctalString(int i) 十进制转成二进制  String Integer.toBinaryString(int i) 十六进制转成十进制 Inte

java实现汉字转unicode与汉字转16进制实例

本文实例讲述了java实现汉字转unicode与汉字转16进制的实现方法.分享给大家供大家参考.具体实现方法如下: 一.汉字转unicode 复制代码 代码如下: public static String toUnicode(String s) {         String as[] = new String[s.length()];         String s1 = "";         for (int i = 0; i < s.length(); i++)   

Java解析DICOM图之如何获得16进制数据详解

前言 在最近的一个项目需要用JAVA来解析DICOM图片,DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用,在实现中遇到一些问题下面做一些记录. 首先找一个*.dcm文件.用编辑器打开可以看到如下界面.我是用的编辑器是UltraEdit 红字标注的是字节码的标注,前面8行代码是文件的头信息一般没用.从第九行开始的四个十六进制数"44,49,43,4D"是很重要的.用ASCll码解释就

java发送heartbeat心跳包(byte转16进制)

复制代码 代码如下: package com.jxy.web; import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.net.Socket;import java.net.UnknownHostException; import com.jxy.tools.MyByte; pu

java 二进制数据与16进制字符串相互转化方法

二进制数据一般输入的格式是0x45, 0x3a, 0xc3, 这种数据格式看起来是16进制的字符串,但是实际上在存储的时候每个都对应一个字节,比如0x45的二进制字节就是0100 0101,对应的16进制字符串就是0x45.实际编程过程中,经常遇到这两种格式的相互转化,在此记录一下代码. 二进制数据转化为16进制字符串(中间加的':'还有':'是为了查看下标,也可以自行去掉): public static String bytesToHexString(byte[] src){ StringBu

Java中Color和16进制字符串互相转换的方法

1.原理 主要是调用了toHexString(将int类型转为16进制字符串).parseInt(将字符串解析为int)这两个方法. 2.代码 public static void main(String[] args) { String hexString = colorToHexValue(Color.RED); System.out.println("16进制字符串:" + hexString); Color color = fromStrToARGB(hexString); S

16进制显示字节流技巧分享

用UE的人都会觉得16进制显示文件灰常方便.为啥捏?当你要对文件加密.转码.编码的时候,蹦出一堆01二进制看着都会头大.毕竟十六进制显示文件简短方便.至少中考高考时涂过卡吧,1+2+4+8能算明白是几吧.当然,那些中考和高考都能把1248码都涂错的童鞋们,一看就知道它们果断与程序猿这个"神剩"的职业无缘哈-- 因为之前试着参加过科普创新大赛,当时做的咚咚是把文件以字节流读入,并转化成二进制.四进制.十六进制字符串,然后刷的一下子输出到控制台.再根据每个位的值,分别以2色.4色.16色的

Python读取图片为16进制表示简单代码

本文主要研究的是python读取jpg格式图片并显示为16进制的相关内容,具体如下. 代码: >>> aaa = open('C:\Users\Administrator\Desktop\java\watermarkphoto/2018119110506012.png','rb') >>> aaa.read() 读取的原图: 显示效果: 总结 一开始读取的图片稍微有点大,idle直接卡死,后来截取了一个小的图片,很快就显示出来. 以上就是本文关于Python读取图片为1

js将URL网址转为16进制加密与解密函数

十六进制(Hexadecimal)是计算机中数据的一种表示方法.同日常生活中的表示法不一样,它由0-9,A-F组成,字母不区分大小写.与10进制的对应关系是:0-9对应0-9:A-F对应10-15:N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F.不同电脑系统.编程语言对于16进制数值有不同的表示方式:如增加0x前缀. 这里推荐一个在线转换的小工具方便大家使用:http://tools.jb51.net/transcoding/decode_encode_tool php函数: bi