废话不多说,直接上代码!

package com.test.util;

public class BankNumberUtil{

private static int i = 0;

/**

* 需要传入一个前缀:6、8、9中的一个。

* 其中:6:类型1,8:类型2,9:类型3 【根据自己的业务定义】

* 其他则会返回异常

* @param prefix

* @return

*/

public synchronized static String getBrankNumber(String prefix)

if(StringUtil.isNotBlank(prefix)){

if("689".indexOf(prefix)>=0&&prefix.length()==1){

String st = "666"+prefix+getUnixTime();

return st+getBankCardCheckCode(st);

}else{

System.out.println("银行卡号前缀有误");

}

}else{

System.out.println("银行卡号去前缀不能是空");

}

}

/***

* 获取当前系统时间戳 并截取

* @return

*/

private synchronized static String getUnixTime(){

try {

Thread.sleep(10);//线程同步执行,休眠10毫秒 防止卡号重复

} catch (InterruptedException e) {

e.printStackTrace();

}

i++;i=i>100?i%10:i;

return ((System.currentTimeMillis()/100)+"").substring(1)+(i%10);

}

/**

* 校验银行卡卡号

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

}

public static void main(String[] args) {

try {

System.out.println(getBrankNumber("8"));

} catch (AppException e) {

e.printStackTrace();

}

}

}

java生成卡号_java 生成银行卡号相关推荐

  1. java生产订单号_java 生成订单号

    public class Order { private static int orderNum = 0001; public static String getOrderNo(){ long No ...

  2. 生成卡号点击按钮生成卡号

    卡号的使用在项目的搭建中时一种具有唯一性和标识性的内容,所以显而易见生成的卡号首要符合的要求就是"唯一性".在日常生活中能想到并意识到的可以运用的,时间我认为是最方便的了. 生成卡 ...

  3. 自动生成卡号和住院号

    (作者:苦行者:撰写时间:2019年7月18) 1.图1显示的html代码分别是两个卡号和住院号的文本框,而我要实现的功能是当我点击"新增"按钮的时候,自动生成卡号和住院号并回填到 ...

  4. php 生成会员卡号,PHP生成独一会员卡号

    ? 我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35.这样的话我 要得到一个5位的编号,最大信息量就是36的5次方了,36 ...

  5. python生成订单号或生成任意序列

    python生成订单号或生成任意序列 示例代码: import time# 生成订单号 def get_order_code():# 年月日时分秒+time.time()的后7位order_no = ...

  6. php 卡号生成,生成卡号php代码

    $a=1; //开始 $b=2; //结束 $c=$b-$a; //统计总共能生成多少张 $ab=$IN['Number']=4; //几位数 $a_c=$in['hdcount']=50; //生成 ...

  7. java 生成https证书_java生成Https证书,及证书导入的步骤和过程

    原文参考:http://www.cnblogs.com/fron/p/https-20170111.html 以下是相关的Tomcat,JDK和Windows环境: Tomcat版本:tomcat-7 ...

  8. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  9. java 生成校验验证码_java生成验证码并进行验证

    一实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证 最后通过ImageIO将 ...

  10. 随机生成卡号,并要求唯一

    思想:判断是否重复,需要遍历系统中所有用户的卡号,如果系统中已经存在该卡号,需要再随机生成一次,直到随机生成的卡号系统中不存在,会用到死循环. public class RandomCardId {p ...

最新文章

  1. Python读取文件夹下的所有文件,并获得文件中的2-10行的信息
  2. [转] hibernate Mysql 自增长 注解配置,表无关联的注解方式关联查询
  3. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
  4. 解惑 [1, 2, 3].map(parseInt) 为何返回[1,NaN,NaN]
  5. junit 静态方法_预期异常规则和模拟静态方法– JUnit
  6. dev c++ 报错[Error] ld returned 1 exit status 的解决办法
  7. [LeetCode] [C++] 206 Reverse Linked List 反转单项链表
  8. freetextbox java_FreeTextBox 增加按钮
  9. jmeter生成html报告修改,Jmeter生成html报告(示例代码)
  10. python如何创建模块视频_Python | 如何创建模块(模块示例)?
  11. [Java] 蓝桥杯ADV-92 算法提高 求最大公约数
  12. 码农如何写好一封邮件/1
  13. 开发API整理(转)
  14. 华硕笔记本触摸板失灵
  15. linux下常用vim命令
  16. 2021年全年详细工作日、周末、节假日数据表sql_excel
  17. 【重磅】新智元推出百万级AI智库资讯互动平台,AI World2017世界人工智能大会TOP10大奖榜单发布
  18. js基础——图片切换实例(函数传参)
  19. 用微信扫一扫功能扫描二维码下载安装APK不能用,不能打开APK下载链接的解决方案
  20. 华为linux系统安装包,一、Linux系统安装

热门文章

  1. com.android.stfwd,[原创]360freewifi逆向分析
  2. 联网下 计算机重启,电脑每次开机都要重启路由器才能上网的处理方法
  3. C#笔记5//建造游戏1/网格地图脚本1/自编/仅创建网格/无需插件
  4. JSON在线序列化网站
  5. 微软官网方法制作win10u盘启动
  6. 搜狐畅游CEO王滔辞职
  7. Android 旋转木马轮播,ReactJs写旋转木马轮播图
  8. JAVA实现GMT转换北京时间
  9. POJ 3097 Falling Ice 笔记
  10. 曲苑杂坛--数据库更新探秘