bank_card.js
 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的更多相关文章
- Vue.js 和 MVVM 小细节
		
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
 - js学习笔记:操作iframe
		
iframe可以说是比较老得话题了,而且网上也基本上在说少用iframe,其原因大致为:堵塞页面加载.安全问题.兼容性问题.搜索引擎抓取不到等等,不过相对于这些缺点,iframe的优点更牛,跨域请求. ...
 - js学习笔记:webpack基础入门(一)
		
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
 - JS调用Android、Ios原生控件
		
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
 - jquery和Js的区别和基础操作
		
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
 - 利用snowfall.jquery.js实现爱心满屏飞
		
小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...
 - node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
		
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
 - JS正则表达式常用总结
		
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
 - 干货分享:让你分分钟学会 JS 闭包
		
闭包,是 Javascript 比较重要的一个概念,对于初学者来讲,闭包是一个特别抽象的概念,特别是ECMA规范给的定义,如果没有实战经验,很难从定义去理解它.因此,本文不会对闭包的概念进行大篇幅描述 ...
 
随机推荐
- <c:forEach>可以默认的把以逗号分隔的字符串作为一个集合来遍历
			
<c:forEach>可以默认的把以逗号分隔的字符串作为一个集合来遍历
 - Java拦截器
			
拦截器,主要用于拦截前端请求,常用于登录检查. 下面是演示使用拦截器拦截未登录的用户访问需要登录的模块情景,使用配置方式实现和注解方式实现代码: 配置方式: 1.web.xml中配置监听器,对于所有的 ...
 - 自己实现strchr函数与strstr函数
			
char* my_strchr(char* str, int i) { if (NULL == str) { return NULL; } while ('\0' != *str && ...
 - python 机械学习之sklearn的数据正规化
			
from sklearn import preprocessing #导入sklearn的处理函数用于处理一些大值数据 x_train, x_test, y_train, y_test = tr ...
 - Linux各目录及每个目录的详细介绍
			
http://www.cnblogs.com/duanji/p/yueding2.html
 - POJ 1017 最少包裹
			
参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6414760.html Packets Time Limit: 1000MS Memory Li ...
 - HDU1506 Largest Rectangle in a Histogram(算竞进阶习题)
			
单调栈裸题 如果矩形高度从左到右是依次递增,那我们枚举每个矩形高度,宽度拉到最优,计算最大面积即可 当有某个矩形比前一个矩形要矮的时候,这块面积的高度就不能大于他本身,所以之前的所有高于他的矩形多出来 ...
 - python中切片的理解
			
Python中什么可以切片 l Python中符合序列的有序序列都支持切片(slice) l 如:列表,字符,元祖 Python中切片的格式 l 格式:[start : end : step] ...
 - GGS-DDU HDU - 4966
			
GGS-DDU Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
 - django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")
			
报错现象 在使用 django 创建 超级用户的时候提示报错 Password (again): ytyt521521 Traceback (most recent call last): File ...