function init() {
undefined = "undefined";
mkCClist();
} function ccchk(cdi) {
output1 = "";
if (cdi != "" && cdi != null) {
output1 = "Processing...";
var cf = sbtString(cdi, " -/abcdefghijklmnopqrstuvwyzABCDEFGHIJLMNOPQRSTUVWYZ|\#()[]{}?%&=!?+*.,;:'");
var cn = chkCard(cf);
var clcd = chkLCD(cf);
var clcdt = "NOT PASSED";
if (clcd) {
clcdt = "PASSED";
}
var ccck = chkCCCksum(cf, cn);
var ccckt = "NOT PASSED";
if (ccck) {
ccckt = "PASSED";
}
var cjd = "INVALID CARD NUMBER";
if (clcd && ccck) {
cjd = "This card number appears to be valid.";
}
var out = "";
out += "Card type : " + cn + "\n";
out += "CCChecksum : " + ccckt + "\n";
out += "Luhn Check Digit: " + clcdt + "\n";
out += cjd;
output1 = out;
}
} function ccngen(p, tr) {
tr *= 1.0;
if (tr < 1 || tr == null) {
tr = 1;
}
output2 = "";
if (p != "" && p != null) {
var cn = chkCard(p);//去掉非数字
for (var i = tr; i >= 1; i--) {
output2 = "Processing... " + i;
var cdi = sbtStringSpRnd(p, "x", "0123456789"); //非x保留,x替换为一个0-9的随机数
var cf = sbtString(cdi, " -/abcdefghijklmnopqrstuvwyzABCDEFGHIJLMNOPQRSTUVWYZ");//数字保留字母去掉
var clcd = chkLCD(cf);
var ccck = chkCCCksum(cf, cn);
if (clcd && ccck) {
break;
}
}
var out = "Couldn't find any valid number for given pattern";
if (clcd && ccck) {
var cn = chkCard(cdi);
var ccnspc = "";
// for (var j = 0; j <= 3; j++) {
// if (document.console.ccnsp.options[j].selected) {
// break;
// }
}
// if (j == 1) {
// ccnspc = " ";
// }
// if (j == 2) {
// ccnspc = "-";
// }
var cdif = "";
for (var i = 1; i <= cdi.length; i++) {
var aS = midS(cdi, i, 1);
if (aS == " ") {
aS = ccnspc;
}
cdif += aS;
}
var out = cdif;
}
output2 = out;
return output2;
} function chgccp() {
mkCClist();
// for (var j = 0; j <= tw - 1; j++) {
// if (document.console.ccpp.options[j].selected) {
// break;
// }
// }
// document.console.ccp.value = c[j + 1];
} function chkCard(cdi) {
cdi += "";
if (c[1] == undefined || c[1] == null || c[1] == "") {
mkCClist();
}
var ccn = 0;
var cn = "unknown"
var cf = sbtString(cdi, " -/abcdefghijklmnopqrstuvwyzABCDEFGHIJLMNOPQRSTUVWYZ");//去掉非数字
if (leftS(cf, 1) == "4") {
cf = leftS(cf, 8);
}
for (var i = 1; i <= tw; i++) {
var cct = sbtString(c[i], " -/abcdefghijklmnopqrstuvwyzABCDEFGHIJLMNOPQRSTUVWYZ");
if (leftS(cf, 1) == "4") {
cct = leftS(cct, 8);
}
var ccc = cmpPattern(cf, cct);
if (ccc) {
ccn = i;
break;
}
}
if (ccn > 0) {
cn = cd[i];
}
return cn;
} function chkCCCksum(cf, cn) {
var r = false;
var w = "21";
// if (linstr(cn,"AmEx") || linstr(cn,"Diner")) {var w="12";}
var ml = "";
var j = 1;
for (var i = 1; i <= cf.length - 1; i++) {
var m = midS(cf, i, 1) * midS(w, j, 1);
m = sumDigits(m);
ml += "" + m;
j++;
if (j > w.length) {
j = 1;
}
}
var ml2 = sumDigits(ml, -1);
var ml1 = (sumDigits(ml2, -1) * 10 - ml2) % 10;
if (ml1 == rightS(cf, 1)) {
r = true;
}
return r;
} function chkLCD(cf) {
var r = false;
cf += "";
var bl = isdiv(cf.length, 2);
var ctd = 0;
for (var i = 1; i <= cf.length; i++) {
var cdg = midS(cf, i, 1);
if (isdiv(i, 2) != bl) {
cdg *= 2;
if (cdg > 9) {
cdg -= 9;
}
}
ctd += cdg * 1.0;
}
if (isdiv(ctd, 10)) {
r = true;
}
return r;
} function mkCClist() {
tw = 2;
c = new makeArray(tw);
cd = new makeArray(tw);
var i = 1;
c[i] = "622202360547xxxxxxx";
cd[i] = "工商银行";
i++;
c[i] = "622617310xxxxxxx";
cd[i] = "民生银行";
i++;
} // Powered by MilkieX - http://www.ElfQrin.com
function leftS(aS, n) {//截取参数一中参数二个字符返回
aS += "";
var rS = "";
if (n >= 1) {
rS = aS.substring(0, n);
}
return rS;
} function rightS(aS, n) {
aS += "";
var rS = "";
if (n >= 1) {
rS = aS.substring(aS.length - n, aS.length);
}
return rS;
} function midS(aS, n, n2) {
aS += "";
var rS = "";
if (n2 == null || n2 == "") {
n2 = aS.length;
}
n *= 1;
n2 *= 1;
if (n < 0) {
n++;
}
rS = aS.substring(n - 1, n - 1 + n2);
return rS;
} function linstr(aS, bS) {
aS += "";
bS += "";
var r = false;
if (leftS(aS, bS.length) == bS) {
r = true;
}
return r;
} function sbtString(s1, s2) {//参数1 中的字符在参数2中没有时 将该字符追加到返回值中
var ous = "";
s1 += "";
s2 += "";
for (var i = 1; i <= s1.length; i++) {
var c1 = s1.substring(i - 1, i);
var c2 = s2.indexOf(c1);
if (c2 == -1) {
ous += c1;
}
}
return ous;
} function sbtStringSpRnd(s1, s2, bS) {
if (bS == null || bS == "") {
bS = "0123456789";
}
var ous = "";
bS += "";
for (var i = 1; i <= s1.length; i++) {
var c1 = s1.substring(i - 1, i);//从头开始截取参数1
var c2 = s2.indexOf(c1);//从参数一中截取的字符在参数二中的位置
if (c2 == -1) {
ous += c1;//如果参数二中没有参数1中截取的字符则将该字符存入ous,否则存入mids('0123456789',random(1,9),1)
//mids取参数1的第参数二位到参数二加参数三位,这他妈不就是0-9随便取一个数吗?
} else {
ous += midS(bS, Math.floor(Math.random() * (bS.length - 1)) + 1, 1);
}
}
return ous;
} function cmpPattern(a, p, x) {
if (x == "" || x == null) {
x = "x";
}
x = "" + x.substring(0, 1);
a += "";
p += "";
r = false;
mc = 0;
if (a.length == p.length) {
for (var i = 1; i <= a.length; i++) {
a1 = midS(a, i, 1);
p1 = midS(p, i, 1);
if (a1 == p1 || p1 == x) {
mc++;
}
}
}
if (mc == a.length) {
r = true;
}
return r;
} function isdiv(a, b) {
if (b == null) {
b = 2;
}
a *= 1.0;
b *= 1.0;
var r = false;
if (a / b == Math.floor(a / b)) {
r = true;
}
return r;
} function sumDigits(n, m) {
if (m == 0 || m == null) {
m = 1;
}
n += "";
if (m > 0) {
while (n.length > m) {
var r = 0;
for (var i = 1; i <= n.length; i++) {
r += 1.0 * midS(n, i, 1);
}
n = "" + r;
}
} else {
for (var j = 1; j <= Math.abs(m); j++) {
var r = 0;
for (var i = 1; i <= n.length; i++) {
r += 1.0 * midS(n, i, 1);
}
n = "" + r;
}
}
r = n;
return r;
} function makeArray(n) {
this.length = n;
for (var i = 1; i <= n; i++) {
this[i] = 0;
}
return this;
} // End of MilkieX
//var dl=""+document.location; dl=dl.toLowerCase(); if (dl.substring(0,22)!="http://www.elfqrin.com" && dl.substring(0,16)!="file:///c|/data/") {window.location="/";}
init(); result=ccngen("622617310xxxxxxx","1000");
OUT.println(result);
vars.put("BANKCARD_NO",result);

bank_card.js的更多相关文章

  1. Vue.js 和 MVVM 小细节

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...

  2. js学习笔记:操作iframe

    iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  5. jquery和Js的区别和基础操作

    jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...

  6. 利用snowfall.jquery.js实现爱心满屏飞

    小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...

  7. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  8. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  9. 干货分享:让你分分钟学会 JS 闭包

    闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...

随机推荐

  1. Redux学习(3) ----- 结合React使用

    Redux 和React 进行结合, 就是用React 做UI, 因为Redux中定义了state,并且定义了改变或获取state的方法,完全可以用来进行状态管理,React中就不用保存状态了,它只要 ...

  2. Codevs1541[USACO]围墙涂色

    离散加差分有点涨姿势啊 对我这种菜鸡而言还是第一次看到啊qwq 题面 大意 :n次,每次覆盖一个区间,求覆盖过m次的节点个数 sol:大概是差分的思想加上离散,就可以解决普通差分无法解决的问题了,比如 ...

  3. 在idea中设置记住git的用户名和密码

    在idea中设置记住git的用户名和密码 1.在项目根目录下执行以下git命令: git config --global credential.helper store 2.执行上述命令后,在idea ...

  4. chrome实用快捷键速记

    标签页和窗口快捷键 操作 快捷键 打开新窗口 Ctrl + n 无痕模式下打开新窗口 Ctrl + Shift + n 打开新的标签页,并跳转到该标签页 Ctrl + t 重新打开最后关闭的标签页,并 ...

  5. BZOJ3275Number——二分图最大权独立集

    题目描述 有N个正整数,需要从中选出一些数,使这些数的和最大.若两个数a,b同时满足以下条件,则a,b不能同时被选1:存在正整数C,使a*a+b*b=c*c2:gcd(a,b)=1 输入 第一行一个正 ...

  6. #194 sequence(搜索+动态规划+主席树)

    考虑按顺序暴搜子序列.如果序列中的数两两不同,显然每次给上一个找到的子序列添上后缀最小值,即为下一个要找的子序列.如果不能再加了就回溯继续考虑后缀次小.第三小……值,直到找到k个子序列. 有重复的数后 ...

  7. web scraper——简单的爬取数据【二】

    web scraper——安装[一] 在上文中我们已经安装好了web scraper现在我们来进行简单的爬取,就来爬取百度的实时热点吧. http://top.baidu.com/buzz?b=1&a ...

  8. spfa优化板子

    用双端队列,当待加入元素小于队首元素时 加入队首, 否则 加入队尾 slf优化 if(!vis[e.v]) { if(Q.empty()) Q.push_front(e.v); else { if(d ...

  9. 【XSY2785】模型

    题目描述 给你一棵\(n\)个点的树,让你加最少的边,使得图中没有割点. 要求输出方案. \(n\leq 500000\) 题解 把叶子的权值设为\(1\),其他点设为\(0\),找出带权重心. 以重 ...

  10. 【AtCoder078D】Fennec VS. Snuke

    AtCoder Regular Contest 078 D - Fennec VS. Snuke 题意 给一个树,1是白色,n是黑色,其它没有颜色.Fennec每次可以染白色点的直接邻居为白色.Snu ...