什么是Luhn算法? Wiki上得标准定义:
http://en.wikipedia.org/wiki/Luhn_algorithm
Luhn算法最常用的领域是信用卡号码的有效性验证,VISA和MasterCard等巨头都使用了该算法。
Luhn算法的基本原理非常简单:(eg:49927398716)
第一步:把信用卡号倒序(61789372994)
第二步:取出倒序后的奇数位置上的号码, 相加等到总和s1(s1=6+7+9+7+9+4=42)
第三步:取出倒序后的偶数位置上的号码,每个号码乘以2. (eg:2,16,6,4,18)
第四步:把第三步得到的大于10的号码转化为个位+十位。(eg:2,7,6,4,9)
第五步:把处理好的偶数位号码相加,得到s2(s2=2+7+6+4+9=28)
第六步:判读(s1+s2)%10 == 0则有效,否则无效。(有效)
代码:
module LuhnValidator
def validate(number)
s1 = s2 = 0
number.to_s.reverse.chars.each_slice(2) do |odd, even|
s1 += odd.to_i
double = even.to_i * 2
double -= 9 if double >= 10
s2 += double
end
(s1 + s2) % 10 == 0 ? 'valid' : 'invalid'
end
end
分享到:
相关推荐
Luhn算法工具,实现对输入附加校验码,检查带校验码字符串是否合法
LUHN算法的VBS实现涉及到对数字字符串的处理,包括对位权值的翻倍、求和以及模运算。 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,产生一个128位的散列值,通常以32个十六进制字符表示。MD5的主要...
在JavaScript中实现Luhn算法,可以有效地帮助我们验证国内银行卡号的合法性,避免因用户输入错误导致的系统问题。 Luhn算法的基本步骤如下: 1. **反转数字串**:从右到左读取数字串(忽略非数字字符),偶数位置...
Luhn计算模10 “隔位2倍加”校验数的公式 计算步骤如下: 1、从右边第一个数字(低序)开始每隔一位乘以2。 2、把在步骤1中获得的乘积的各位数字与原号码中位乘2的各位数字相加求和。 3、从步骤2中获得的数字邻近的...
在Java中实现Luhn算法,我们需要遵循以下步骤: 1. **初始化数字序列**:首先,将数字序列(如信用卡号)从右到左(即从末尾到首部)读取,奇数位置的数字保持不变,偶数位置的数字需要双倍计算。如果双倍后的结果...
本文将详细介绍如何使用Python3实现Luhn算法来快速验证信用卡卡号,并提供实际的代码示例。 #### 1. Luhn算法简介 Luhn算法(也称为模10算法)是由Hans Peter Luhn于1954年提出的,主要用于验证各种标识号码的有效...
纯C语言实现的Luhn算法(信用卡校验位) 示例 C 函数“check_number()”用于检查任意长度的数字字符串,在字符串末尾使用 Luhn 校验位加上示例 C 函数“calc_digit()”以计算给定字符串的校验位字符。示例“main”C...
Luhn算法主要北用来进行数字验证,尤其是卡号身份证号等,这里我们就来看一下Luhn算法学习及其Ruby版实现代码示例:
`LLUHN.cpp`可能是实现LUHN算法的C++源代码文件,其中包含函数定义和其他具体实现细节。而`LLUHN.h`则可能是一个头文件,定义了相关的函数原型、数据结构以及可能的常量,供其他程序模块调用和引用。 在实际应用中...
银行卡校验规则(Luhn算法)--JDK1.7下双击运行即可,详情参看https://zhuanlan.zhihu.com/p/26939610
Luhn算法是由IBM科学家Hans Peter Luhn发明的一种简单的校验算法,广泛用于金融行业,尤其在银行卡号校验中应用甚广。 Luhn算法校验的过程大致如下: 1. 从卡号的最后一位数字开始,从右向左,每次跳过一位进行加...
在本文中,我们将详细介绍Go语言如何使用Luhn算法来验证信用卡卡号的有效性。...Luhn算法的实现简单且高效,适用于各种需要进行数字校验的应用场景。希望本文的介绍对您在Go语言程序设计上有所助益。
Luhn Mod N算法JavaScript实现 Luhn mod N算法是Luhn算法(也称为mod 10算法)的扩展,允许它处理非数字字符序列。 当需要使用校验位来验证由字母,字母和数字的组合甚至任何任意字符集组成的标识字符串时,这将很...
在提供的压缩包 "php-luhn-summarize-master" 中,可能包含了一个具体的 Luhn 算法实现,你可以解压并查看源代码,了解更详细的实现方式和可能的优化。 总之,PHP 的 Luhn 算法实现是一个实用的工具,它有助于确保...
银行卡号Luhn校验算法的JS实现 在电子商务和在线支付系统中,银行卡号验证是非常重要的一步。为了提高系统的交互性和信息录入的准确性,同时减轻服务器的工作压力,需要在浏览器端进行有效的银行卡号验证。本文讨论...
一个微小的(希望如此) gem 将自动执行一些基于 Luhn 算法(例如信用卡号、ID 号)生成/验证数字字符串的痛苦任务。 用法 要求: require 'luhnacy' 通用ValidationGeneration 验证: Luhnacy . valid? ( '...
《Luhn算法在TypeScript中的实现探析》 在信息技术领域,数据验证是保障系统安全性和数据准确性的重要环节。Luhn算法,又称模10校验算法或Luhn Mod 10校验,就是其中一种广泛应用的数据校验方法。本文将深入探讨...
Luhn算法的Python 3.4实现 用于验证(返回True)或拒绝(返回False)Luhn兼容帐号的Python3系统。 检查14、15或16位数字卡号,以确定该数字是否符合Luhn的要求。 有关公式的详细信息,请参见: : 其中cardNumber...
总的来说,Ruby-creditcardvalidations是一个实用的工具,可以帮助开发者快速实现信用卡验证功能,提高在线支付系统的安全性与可靠性。通过了解和熟练使用这个库,可以更有效地处理与支付相关的业务逻辑,为用户提供...