Luhn 算法或是Luhn 公式,也被稱作“模10算法”。它是一種簡單的校驗公式,一般會被用於身份證號碼,IMEI號碼,美國供應商識別號碼,或是加拿大的社會保險號碼的驗證。該算法是由IBM的科學家Hans Peter Luhn所創造,於1954年1月6日提出該專利的申請,並於1960年8月23日被授予,在美國的專利號為2950048。
該算法一直都被大家所公用,並且時至今日套用也很廣泛。它被指定在ISO/IEC7812-1。它的目的不是成為一種加密安全的哈希函式;它的目的是防止意外出現的錯誤,而不是惡意攻擊。很多信用卡和眾多的政府身份識別號碼都使用該算法從一系列的隨機數字中提取有效的數字。
優點和缺點
Luhn 算法會檢測到任何單碼的錯誤以及幾乎所有的相鄰數字換位的錯誤。但是它不會檢測兩個數字序列09轉90的錯誤(反之亦然)。它會檢測到十分之七的相同雙位數錯誤(不會檢測到22和55的互換,33和66的互換,44和77的互換)。其他更複雜的檢查數字算法,如費爾赫夫算法,可以檢測出更多的轉錄錯誤。模N的Luhn算法是Luhn算法的一個擴展,支持非數字字元串。因為該算法採取了從右向左的方式,而且零位會影響計算的結果。只有當零位造成了數位的移動或是用零來填充一串數字的開頭時才不會影響計算結果的生成。因此不論在將1234用零填充為0001234之前或是之後,使用Luhn算法得到的結果都是一樣的。
該算法在美國專利上是為了給手持或是機械設備計算校驗碼。所以它必須儘可能的簡單。
基本介紹
- 中文名:LUHN算法
- 外文名:Luhn
- 用途:計算信用卡等證件號碼的合法性
- 屬性:一種程式