Luhn算法

✍ dations ◷ 2025-09-17 11:02:06 #同余,校验和算法,错误检测与校正

Luhn算法(Luhn algorithm),也称为“模10”(Mod 10)算法,是一种简单的校验和算法,一般用于验证身份识别码,例如发卡行识别码、国际移动设备辨识码(IMEI),美国国家提供商标识(英语:National Provider Identifier)号码,或是加拿大社会保险号码(英语:Social Insurance Number)。该算法由IBM科学家Hans Peter Luhn(英语:Hans Peter Luhn)创造,专利于1954年1月6日申请,1960年8月23日颁证,美国专利号2950048。

该算法现已属于公有领域并得到了广泛的应用,例如ISO/IEC 7812-1。它不是一种安全的加密哈希函数,设计它的目的只是防止意外出错而不是恶意攻击。

Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码。

我们以数字“7992739871”为例,计算其校验位,设校验位为X并添加至数列末位,即7992739871X:

另一种方法是:

Luhn算法可以发现某一位的错误。Luhn算法几乎可以发现所有由于邻位上数字被交换产生的错误。但是,它只能发现数字交换产生的错误中的7/10,不会发现22 ↔ 55, 33 ↔ 66 或 44 ↔ 77。

相关

  • 艾尔弗雷德·福勒艾尔弗雷德·福勒,CBE FRS(英语:Alfred Fowler,1868年3月22日-1940年6月24日),出生于约克郡,英国天文学家。奖项以他的名字命名的事物
  • 清水河街道清水河街道,是中华人民共和国广东省深圳市罗湖区下辖的一个乡镇级行政单位。名称取自于布吉河旧时的别称“清水河”以及街道内的城中村——清水河村。曾是深圳市两大仓库聚集
  • 邦戈哈吉·奥马尔·邦戈(el Hadj Omar Bongo,1935年12月30日-2009年6月8日),非洲国家加蓬终身总统,从1967年起担任总统直至去世。邦戈1935年12月30日出生于法属赤道非洲小城Lewai(现改
  • 杭嘉湖平原杭嘉湖平原是浙江省内最大的平原,面积约7620平方千米,地理上为长江三角洲的组成部分。位于太湖以南,钱塘江和杭州湾以北,天目山以东。包括嘉兴市全部,湖州市大部以及杭州市的东北
  • 厄温·内尔厄温·内尔(德语:Erwin Neher,1944年3月20日-),德国生物物理学家。1991年,获得诺贝尔生理学或医学奖。内尔出生在巴伐利亚的莱希河畔兰茨贝格,1963年至1966年其间于慕尼黑工业大学学
  • 安德里亚·莫霍罗维奇安德里亚·莫霍罗维奇(克罗地亚语:Andrija Mohorovičić,1857年1月23日-1936年12月18日)是著名的克罗地亚气象学家及地震学家,他也是莫氏不连续面的发现者。莫霍洛维奇出生在欧帕
  • 苍白短吻狮子鱼苍白短吻狮子鱼,为辐鳍鱼纲鲉形目杜父鱼亚目狮子鱼科吻狮子鱼属的其中一种。分布于东南太平洋区的智利海域,栖息在水深6至28米的水域,生活习性不明。 维基物种中有关苍白短吻狮
  • 燃烧驱动《燃烧驱动》是一部由世嘉和讲谈社联合制作的跨媒体作品。漫画版于2008年上半年开始连载,而同名的游戏则于同年12月推出。游戏和漫画的主角不是同一人,不过他们同时都在两部作
  • 贝贝里比贝贝里比(葡萄牙语:Beberibe)是巴西塞阿拉州的一个市镇。总面积1616.389平方公里,2007年总人口44882人,人口密度27.8人/平方公里。
  • 氢燃烧氢燃烧过程在恒星核合成中可以是5倍太阳质量以内的主序星,进行的质子-质子链反应,或是更重的恒星所进行的,以碳氮氧循环为主的反应。这两者都是靠着将氢燃烧成氦的过程来产生恒