透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

Luhn 檢查結果
VALID
數字位數 11
Luhn 加總 70
總和 mod 10 0
校驗碼(末位) 3

什麼是 Luhn 演算法?

Luhn 演算法又稱「mod 10」演算法,是 IBM 科學家 Hans Peter Luhn 於 1954 年提出的一套簡單校驗碼公式。它廣泛用於驗證各種識別號碼,例如信用卡與金融卡卡號、手機的 IMEI 序號,以及許多國家的身分識別號碼。它能偵測單一數字輸入錯誤,以及大多數相鄰數字對調的情況;不過要特別注意,它並不是加密層級的安全機制,只是一種基本的資料完整性檢查。

如何使用本計算器

在欄位中輸入你想驗證的號碼(空格與連字號會自動忽略)。計算器會處理每一位數字、套用 Luhn 校驗碼公式,並告訴你這組號碼是有效(VALID)還是無效(INVALID),同時顯示加總結果、總和對 10 取餘數,以及最末位的校驗碼。

公式原理說明

從右到左讀取每一位數字。最右邊的(校驗)數字維持不變,接著將每隔一位的數字乘以 2。如果乘 2 後的結果大於 9,就減去 9(等同於把兩位數相加,例如 \(8\times2=16 \to 1+6=7\))。將處理後的所有數值加總。若總和能被 10 整除,這組號碼就通過 Luhn 檢查。

$$\text{Valid} \iff \left(\sum_{i=0}^{n-1} f(d_i)\right) \bmod 10 = 0 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d_i &= i\text{-th digit of } \text{Number} \text{ (from right)} \\ f(d_i) &= \begin{cases} d_i & i \text{ even} \\ 2d_i - 9\,[2d_i>9] & i \text{ odd} \end{cases} \end{aligned} \right.$$
展示盧恩演算法從右側開始數字加倍的扁平示意圖,隔位數字被加倍並求和
盧恩演算法從右往左將每隔一位的數字加倍,然後將所有數字相加。

實際範例

以號碼 79927398713 為例。從右側起將每隔一位的數字乘以 2,並把超過 9 的結果減 9 後,得到一組調整後的數字,其總和為 70。由於 \(70 \bmod 10 = 0\),這組號碼是有效的

展示盧恩校驗以模10測試結尾、分支為有效或無效的扁平流程圖
如果總和能被10整除,該號碼即有效。

常見問題

通過 Luhn 檢查就代表卡片是真的嗎?不是。它只能確認號碼的格式正確,並不會檢查該帳戶是否真的存在,或裡面是否有餘額。

可以輸入哪些字元?只會使用數字;空格、連字號與其他符號都會在計算前先被移除。

為什麼乘 2 後要減 9?當乘 2 後的數字大於 9 時,減去 9 的結果與將其兩位數字相加完全相同,而這正是原始 Luhn 規則所要求的。

最後更新: