Luhn算法(Luhn algorithm),也稱為「模10」(Mod 10)算法,是一種簡單的校驗和算法,主要用於驗證身份識別碼,例如發卡行識別碼、國際行動裝置辨識碼(IMEI)、美國國家提供商標識號碼,或是加拿大社會保險號碼。它由IBM科學家Hans Peter Luhn創造,其專利在1954年1月6日申請,1960年8月23日頒發,美國專利號為2950048。儘管Luhn算法的設計初衷是為了防止輸入錯誤,而不是抵禦惡意攻擊,但它已被廣泛套用於多種場合。
Luhn算法的工作原理如下:
從卡號的最後一位數字開始,逆向將奇數位(如第1、3、5位等)的數字相加。
從卡號最後一位開始,逆向將偶數位數字乘以2。如果乘積為兩位數,則減去9。然後將所有處理後的數字相加。
將奇數位和偶數位的總和相加,理想情況下,這個結果應該可以被10整除。
這種算法通過對卡號中的數字進行加權求和,並進行一系列算術運算,最後得到的結果與10進行模運算。如果結果為0,則表示卡號有效。Luhn算法的特點是簡單且易於實現,能夠快速判斷一個號碼是否有效,從而提高數據的準確性和安全性。