`
wsj123
  • 浏览: 155461 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

银行卡卡号校验——Luhn算法

    博客分类:
  • JS
阅读更多
银行卡卡号校验——Luhn算法

1.1 Luhn简介
        Luhn算法/公式,也称“模10算法”,是一种简单的校验公式,常被用于银行卡卡号、IMEI号等证件号码的识别校验。
        需要注意的是Luhn算法存在的目的并不是成为一种加密安全的哈希函数,而在于防止意外操作导致的错误,如错误输入。
Luhn算法英文参考:https://en.wikipedia.org/wiki/Luhn_algorithm#cite_note-0
1.2校验规则
        Luhn算法被用于最后一位为校验码的一串数字的校验,通过如下规则计算校验码的正确性:
        1、按照从右往左的顺序,从这串数字的右边开始,包含校验码,将偶数位数字乘以2,如果每次乘二操作的结果大于9(如 8 × 2 = 16),然后计算个位和十位数字的和(如 1 + 6 = 7)或者用这个结果减去9(如 16 - 9 = 7)。
        2、第一步操作过后会得到新的一串数字,计算所有数字的和(包含校验码)。
        3、用第二步操作得到的和进行“模10”运算,如果结果为0,表示校验通过,否则失败。
1.3实例
function bankCheckCodeValidate(str) {
    var sum=0,evenArr=[],oddArr=[];
    var numArr=str.split("").reverse();
    for(var i=0;i<numArr.length;i++){
        i%2 != 0 ? evenArr.push(numArr[i]*2) : oddArr.push(numArr[i]);
    }
    for(var x=0;x<evenArr.length;x++){
        evenArr[x]>9 ? sum+=(evenArr[x]-9) : sum+=evenArr[x];
    }
    for(var k=0;k<oddArr.length;k++){
        sum+=parseInt(oddArr[k]);
    }
    return (sum%10 == 0);
}

1.4优缺点
        Luhn算法可以检测出任何单码错误和近乎所有的相邻数字交换产生的错误,但是检测不出两个数字序列09和90的交换错误。它可以检测出十分之七比例的相同两位数交换错误(但2 ↔ 55, 33 ↔ 66 和 44 ↔ 77除外)。
分享到:
评论

相关推荐

    Python3通过Luhn算法快速验证信用卡卡号的方法

    ### Python3通过Luhn算法快速验证信用卡卡号的方法 在当今数字化时代,信用卡作为一种便捷的支付方式被广泛使用。为了确保交易的安全性,各种验证机制应运而生,其中Luhn算法是一种常用的校验码算法,用于验证各种...

    LUHN算法的作用是为了计算信用卡等证件号码的合法性

    LUHN算法,也被称为模10验证或Luhn校验,是用于验证一系列数字序列(如信用卡号、IMEI号码、加拿大社会保险号等)的一种简单但有效的算法。这个算法的目的是确保输入的数字序列在一定程度上是正确的,避免因为输入...

    Go语言通过Luhn算法验证信用卡卡号是否有效的方法

    Luhn算法是一种简单的校验和公式,它通常用于验证各种身份识别号码,如信用卡卡号,以防止输入错误。这种方法由Hans Peter Luhn于1954年发明,成为银行业务中不可或缺的一部分。接下来我们将探讨Luhn算法的原理,并...

    PHP实现通过Luhn算法校验信用卡卡号是否有效

    本文实例讲述了PHP实现通过Luhn算法校验信用卡卡号是否有效的方法。分享给大家供大家参考。具体实现方法如下: $numbers = 49927398716 49927398717 1234567812345678 1234567812345670; foreach (split(' ', $...

    Python银行卡卡号自动识别源程序,GUI前端,基于PyQt5+opencv

    为了增加准确性和可靠性,系统可能会包含一个验证步骤,检查识别出的卡号是否符合银行卡号的一般规则(比如Luhn校验或特定的格式)。如果发现错误,可能提供手动修正选项。 **7. 文件组织** 根据描述,项目结构...

    银行卡卡号识别

    同时,为了增加安全性,还可以与银行系统提供的格式进行匹配验证,例如检查卡号的长度和Luhn校验码。 在这个项目中,提供的"BCR"可能是源代码文件或相关资源的名称,它包含了实现上述步骤的算法和逻辑。要深入理解...

    [计算机]C语言信用卡卡号验证.doc

    在C语言中,我们可以实现一个简单的程序来验证信用卡号码是否符合Luhn算法,这是一种广泛用于验证银行卡号的校验算法。以下是对Luhn算法和相关C语言代码的详细解释: Luhn算法,又称为模10算法,是一种简单的校验和...

    VB.NET实现验证信用卡卡号

    这个过程通常依赖于一种称为Luhn算法(也称为模10算法)的简单校验方法。Luhn算法是为了确保信用卡号的正确性而设计的,它通过检查数字的排列方式来确认其合法性。以下将详细介绍如何使用VB.NET实现这个功能。 首先...

    JavaScript随机生成信用卡卡号的方法

    4. **校验位(Luhn算法)**: - 校验位是为了确认卡号的有效性而设计的算法,称为Luhn算法,又称模10算法。 - Luhn算法计算过程包括将数字从右边开始翻倍和加和,如果翻倍后的结果是两位数,则将这两位数相加得到...

    最新银行卡bin脚本.zip

    2. **验证功能**:对输入的银行卡号进行合法性验证,检查其是否符合特定的格式规则,比如Luhn算法校验。 3. **数据更新**:由于BIN信息会随着时间和银行策略的变化而更新,这个脚本可能包含了定期更新或获取最新BIN...

    PHP验证信用卡卡号是否正确函数

    在PHP中验证信用卡卡号通常需要遵循一种特定的算法,那就是著名的“模10算法”(Luhn算法),这是一个简单的校验流程,用于验证各种身份识别号码,包括信用卡号。该算法由汉斯·彼得·卢恩(Hans Peter Luhn)于1954...

    php正则校验用户名介绍

    &lt;?... } else { echo ‘no’;...PHP校验ISBN码的函数代码php生成SessionID和图片校验码的思路和实现代码php约瑟夫问题解决关于处死犯人的算法PHP贪婪算法解决0-1背包问题实例分析PHP实现通过Luhn算法校验信用卡卡

    php实现用于验证所有类型的信用卡类

    Luhn算法,又称模10算法,是一种在金融领域广泛使用的校验算法,用于验证各种身份识别码,如信用卡卡号。其基本步骤如下: 1. 从右边第一个数字开始,从右至左进行数字的加倍操作,但如果当前数字是偶数,则将其值...

    一个HTML5表单验证效果.rar

    在信用卡验证的例子中,可能有JavaScript代码检查输入的卡号是否通过Luhn算法(一种简单的校验算法)验证,以确认其合法性。 总的来说,这个HTML5表单验证示例展示了如何结合HTML5的新特性、CSS3以及JavaScript来...

    php实现通用的信用卡验证类

    4. 校验位计算:在Luhn算法中,通过将卡号的各位数字按照特定的规则(比如每个奇数位的数字乘以2,偶数位的数字不变)计算出一个校验位,如果卡号符合该校验位的要求,则卡号可能是有效的。 使用PHP实现信用卡验证...

Global site tag (gtag.js) - Google Analytics