前 12 位按「1、3、1、3…」交替加權求和,取結果對 10 的補數——校驗位就這麼來的。它不保證商品是真的,但能擋住絕大多數錄入與印刷錯誤。
EAN-13 共 13 位,最後一位是校驗位,前 12 位是數據位。計算時從第 1 位開始,奇數位(第 1、3、5…位)乘 1,偶數位(第 2、4、6…位)乘 3,然後把 12 個乘積相加。注意:從左邊第一位開始數,不是從右邊。
把上一步的和对 10 取餘,再用 10 減去這個餘數,結果再對 10 取餘——得到的個位數就是校驗位。公式寫成 (10 − 和 mod 10) mod 10,末尾再取一次 mod 是為了處理餘數為 0 時得到 10 的情況。
權重 1/3 交替的設計讓相鄰位的權重不同,這樣「兩個相鄰數字寫反」這類最常見的人為錯誤(如 12 看成 21)幾乎必然改變加權和,從而被抓出。這是校驗位設計的核心目的:不是加密,而是錯誤檢測。
只意味著一件事:這串數字的構成是合法的,即它確實可能是一個按規則生成的 GTIN。它不說明這個號碼已經被分配給了某個企業,不說明商品是真品,也不說明號碼在 GS1 資料庫裡存在。要確認歸屬,需要查成員組織的註冊資訊;要判斷真偽,需要品牌方的防偽手段。這是很多文章會混淆的地方。
可直接摘錄的關鍵結論。
從左起奇數位×1、偶數位×3,求和,取 (10 − 和 mod 10) mod 10。
相鄰位權重不同,讓「數字寫反」這類高頻錯誤無處可躲。
格式合法只說明可能合法,不說明已分配、不說明商品為真。
錯了掃不出,還進印刷流程會造成整批包裝報廢。
| 位序 | 數字 | 權重 | 乘積 |
|---|---|---|---|
| 1 | 6 | 1 | 6 |
| 2 | 9 | 3 | 27 |
| 3 | 0 | 1 | 0 |
| 4 | 1 | 3 | 3 |
| 5 | 2 | 1 | 2 |
| 6 | 3 | 3 | 9 |
| 7 | 4 | 1 | 4 |
| 8 | 5 | 3 | 15 |
| 9 | 6 | 1 | 6 |
| 10 | 7 | 3 | 21 |
| 11 | 8 | 1 | 8 |
| 12 | 9 | 3 | 27 |
| 合計 | — | — | 128 |
| 補數 (10 − 128 mod 10) mod 10 | — | — | 2 |
EAN-13 校驗位演示
示例 690123456789 為演示用前 12 位,校驗位由演算法推導;結果號碼不屬於任何企業。
本文涉及的專有名詞。
模 10 運算,取除以 10 的餘數。GS1 系列校驗位均基於 mod10。
各位數字乘以各自權重後的總和,是校驗計算的中間量。
相鄰兩位數字順序寫反,是人工錄入最高發的錯誤類型之一。
本文內容依據以下公開標準與機構規範整理,可自行複核。
GS1 是管理全球商品編碼體系的國際組織,其通用規範規定了 GTIN、GLN、SSCC 等編碼結構、校驗位算法與符號印刷要求。
本站所有條碼示例均經開源解碼器回讀驗證,可自行複核,避免出現「看起來像但掃不出來」的圖示。
知識頁解決通用問題,具體到你的商品、市場與渠道時,直接問編碼顧問更快。