fbpx
维基百科

卢恩算法

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

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

描述

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

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

  1. 从校验位开始,从右往左,偶数位乘2(例如,7*2=14),然后将两位数字的个位与十位相加(例如,10:1+0=1,14:1+4=5);
  2. 把得到的数字加在一起(本例中得到67);
  3. 将数字的和取模10(本例中得到7),再用10去减(本例中得到3),得到校验位。
原始数字 7 9 9 2 7 3 9 8 7 1 x
偶数位乘2 7 18 9 4 7 6 9 16 7 2 x
将数字相加 7 9 9 4 7 6 9 7 7 2 =67
再用10去减得到校验位 3

另一种方法是:

  1. 从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与十位相加;
  2. 计算所有数字的和(67);
  3. 乘以9(603);
  4. 取其个位数字(3),得到校验位。

优缺点

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

参考文献

  1. ^ 专利 US2950048 - COMPUTER FOR VERIFYING NUMBERS - Google 专利
  2. ^ ISO/IEC 7812-1:2006 Identification cards -- Identification of issuers -- Part 1: Numbering system. [2013-10-19]. (原始内容于2016-06-29). 

卢恩算法, 英語, luhn, algorithm, 也称为, 模10, 算法, 是一种简单的校验和算法, 一般用于验证身份识别码, 例如发卡行识别码, 国际移动设备识别码, 美国国家提供商标识, 英语, national, provider, identifier, 号码, 或是加拿大社会保险号码, 英语, social, insurance, number, 该算法由ibm科学家漢斯, 彼得, 盧恩, 英语, hans, peter, luhn, 创造, 专利于1954年1月6日申请, 1960年8月23日颁证. 卢恩算法 英語 Luhn algorithm 也称为 模10 Mod 10 算法 是一种简单的校验和算法 一般用于验证身份识别码 例如发卡行识别码 国际移动设备识别码 美国国家提供商标识 英语 National Provider Identifier 号码 或是加拿大社会保险号码 英语 Social Insurance Number 该算法由IBM科学家漢斯 彼得 盧恩 英语 Hans Peter Luhn 创造 专利于1954年1月6日申请 1960年8月23日颁证 美国专利号2950048 1 该算法现已属于公有领域并得到了广泛的应用 例如ISO IEC 7812 1 2 它不是一种安全的加密哈希函数 设计它的目的只是防止意外出错而不是恶意攻击 描述 编辑卢恩算法会通过校验码对一串数字进行验证 校验码通常会被加到这串数字的末尾处 从而得到一个完整的身份识别码 我们以数字 7992739871 为例 计算其校验位 设校验位为X并添加至数列末位 即7992739871X 从校验位开始 从右往左 偶数位乘2 例如 7 2 14 然后将两位数字的个位与十位相加 例如 10 1 0 1 14 1 4 5 把得到的数字加在一起 本例中得到67 将数字的和取模10 本例中得到7 再用10去减 本例中得到3 得到校验位 原始数字 7 9 9 2 7 3 9 8 7 1 x偶数位乘2 7 18 9 4 7 6 9 16 7 2 x将数字相加 7 9 9 4 7 6 9 7 7 2 67再用10去减得到校验位 3另一种方法是 从校验位开始 从右往左 偶数位乘2 然后将两位数字的个位与十位相加 计算所有数字的和 67 乘以9 603 取其个位数字 3 得到校验位 优缺点 编辑卢恩算法可以发现某一位的错误 卢恩算法几乎可以发现所有由于邻位上数字被交换产生的错误 但是 它只能发现数字交换产生的错误中的7 10 不会发现22 55 33 66 或 44 77 参考文献 编辑 专利 US2950048 COMPUTER FOR VERIFYING NUMBERS Google 专利 ISO IEC 7812 1 2006 Identification cards Identification of issuers Part 1 Numbering system 2013 10 19 原始内容存档于2016 06 29 取自 https zh wikipedia org w index php title 卢恩算法 amp oldid 65160627, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。