代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
生成仿银行卡的会员号
作者:
天星
/ 发布于
2020/4/3
/
1375
生成仿银行卡的会员号
package com.shopping.test; import com.shopping.app.util.StringUtil; /*** * 生成仿银行卡的会员卡号 */ 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("银行卡号前缀有误"); return null; } } else { System.out.println("银行卡号去前缀不能是空"); return null; } } /*** * 获取当前系统时间戳 并截取 */ 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 */ 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) { for (int i=0;i<100;i++){ System.out.println(getBrankNumber("8")); System.out.println(getBrankNumber("6")); System.out.println(getBrankNumber("9")); } } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
天星
贡献的其它代码
(
31
)
.
生成仿银行卡的会员号
.
MyBatis基本查询、条件查询、查询排序
.
撒列实现关键字过虑
.
jsonp跨域请求C# webform页面的数据
.
定积分计算(Romberg)
.
android Gridview九宫的效果实现
.
实现动态数组,克服静态数组大小固定
.
计算一个数的平方根
.
计算厄密多项式
.
将字符串转换为整数
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3