目录:
定义-Luhn公式是什么意思?
Luhn公式是一个简单的校验和公式,用于验证各种标识号,例如信用卡号,社会保险号,IMEI编号以及许多其他编号。 该算法针对数字本身中包含的校验位(通常是最后一位)来验证数字。 Luhn公式现在已在公共领域使用,并已广泛用于各个行业,并在ISO / IEC 7812-1中进行了规定。
Luhn公式也称为Luhn算法,模数10算法或mod 10算法。
Techopedia解释了Luhn公式
Luhn公式是由IBM科学家Hans Peter Luhn设计的,他于1954年为该公式申请了专利,并于1960年获得了专利。该公式并非旨在成为具有密码安全性的哈希函数,而是一种简单的方法创建唯一的标识号时可以防止意外错误。 许多政府机构和私人机构使用该公式来区分有效数字和错误键入的,错误的或仅仅是欺诈性数字。
该公式用于通过检查所包含的校验位是否正确来验证一系列数字。 通常将校验码附加到部分编号上以完成该校验。
以下过程是校验位的生成:
- 从最右边的数字开始,将第二个数字的值翻倍。
- 如果第一步得到的乘积大于9,则将两个数字相加(例如5×3 = 15,1 + 5 = 6)。 如果结果为9或更小,请保留该数字。
- 取所有数字的总和。
- 将总和乘以9并得到总和的“模10”; 结果是校验位。
示例:数字系列927638965
9 |
2 |
7 |
6 |
3 |
8 |
9 |
6 |
5是校验位 |
9 |
4 |
7 |
12 |
3 |
16 |
9 |
12 |
|
9 |
4 |
7 |
3 |
3 |
7 |
9 |
3 |
总和= 45; 45×9 = 405(mod 10)= 5 |
为了检查数字是否有效,只需遵循除校验数字外的算法,如果获得与校验数字相同的结果,则根据Luhn公式,该数字有效。 但是,此算法不是很可靠,只能检测到两位数的序列09到90的转位,但大多数错误只能检测一位数的错误和相邻数字的转位。更复杂的算法(例如Verhoeff算法和Damm算法)能够以检测更多的转录错误。
