如果這個工具幫到了你,可以請作者喝杯咖啡 ☕
生成符合Luhn演算法的測試用銀行卡號,支援Visa、MasterCard、銀聯等主流卡組織格式
點選“生成銀行卡號”檢視結果
在開發支付功能時,你可能會用到成百上千個格式正確的銀行卡號來測試表單驗證,但絕不能使用使用者的真實卡號。我們這個生成器可以為你建立符合 Luhn 演算法的虛擬測試卡號,安全又合規。生成的卡號能夠透過銀行系統的初級格式校驗,卻沒有對應的真實賬戶,專門用於軟體測試、教學演示等非交易場景。目前支援三種常見卡組織:Visa、Mastercard 和銀聯(UnionPay),單次最多可以生成 100 個卡號。
銀行卡號的核心校驗規則來自 Luhn 演算法(又稱“模10演算法”),由 Hans Peter Luhn 在 1954 年提出,今天仍被全球支付網路用於檢測卡號輸入錯誤。它的原理很簡單:從卡號最右邊一位(校驗位)開始,每間隔一位將數字乘以 2;如果乘 2 後的結果大於或等於 10,就把兩個數字相加(等價於減 9);然後把所有這些數字加起來,總和如果能被 10 整除,卡號就透過了校驗。這樣設計的巧妙之處在於,它能夠發現絕大多數單一位數誤敲和相鄰兩位換位的錯誤,但計算量又極小,非常適合在刷卡終端和網頁端實時執行。
我們選擇 Visa,數量設為 1,點選生成。假設得到的卡號是 4929123456789012(真實使用時會隨機變化)。這 16 位數字可以拆成三部分:前 6 位 492912 是髮卡行標識碼(BIN),表明這是一張 Visa 卡;中間第 7 到 15 位是隨機生成的個人賬戶標識;最後一位 2 是 Luhn 校驗位。
手工驗證一遍:取前 15 位 492912345678901,從右往左把偶數位(第15、13…1位)乘以 2,得到序列 8,9,4,9,2,4,10,14,18,8,14,12,6,12,2;凡超過 9 的減 9,於是變成 8,9,4,9,2,4,1,5,9,8,5,3,6,3,2。將它們與未加倍的第14、12…2位數字 2,1,3,5,7,9,0 一起相加:8+2+9+1+4+3+9+5+2+7+4+9+1+0+5+9+8+3+6+3+2 = 108。108 能被 10 整除,校驗透過,所以 2 是正確的校驗位。
對照來看:選擇 Mastercard 會得到以 51–55 開頭的 16 位卡號,例如 5323456789012345;選擇 銀聯 會得到以 62 開頭的 16 位卡號,如 6223456789012345。透過字首就能分清是哪一家的測試卡。
你拿到的每一串 16 位數字都不是隨便生成的。前 6 位固定遵循對應卡組織的 BIN 範圍,用來讓任何讀卡系統一眼識別出“這是 Visa 還是銀聯”;中間 9 位是隨機生成的個人賬戶標識,末尾 1 位由前 15 位透過 Luhn 演算法自動算出。不同卡組織的典型特徵彙總如下:
| 卡組織 | 字首(BIN 範圍) | 生成卡號長度 |
|---|---|---|
| Visa | 4 | 16 位 |
| Mastercard | 51–55 | 16 位 |
| 銀聯(UnionPay) | 62 | 16 位 |
你可以把生成的卡號複製到任何支援 Luhn 校驗的工具中驗證,它一定會透過。但請注意:這些卡號不包含真實銀行資訊、沒有有效期和 CVV,只解決了“格式合法”這一個問題。
常見踩坑:
FAQ:
Q: 這些卡號能用來買東西嗎?
A: 絕對不能。它們是沒有任何資金賬戶關聯的數字序列,支付閘道器會直接拒絕交易。
Q: 為什麼某個網站會自動識別我生成的卡號為 Visa?
A: 因為前 6 位數字正好落在 Visa 的 BIN 範圍內,網站只做了字首檢測。這只是初步識別,不代表卡號真實,後續授權仍會失敗。
Q: 能不能生成美國運通卡或 JCB 卡號?
A: 目前只支援 Visa、Mastercard 和銀聯三種。如果你需要其他卡組織,建議尋找支援更多 BIN 的專用測試工具。
Q: 數量上限為什麼是 100?
A: 一次生成過多會導致頁面渲染變慢,100 是在流暢體驗和批次需求之間的一個平衡點。上千個卡號可以分成多次生成。
Q: 重新整理頁面後卡號還在嗎?
A: 不會保留。生成器純在瀏覽器端執行,不儲存任何資料,重新整理或關閉頁面後結果就會消失。
現在你可以在上方的生成器中,選擇卡組織、填好數量,試試生成自己的測試卡號了。