4.9 KiB
4.9 KiB
信用卡生成器 (Card Generator)
虚拟信用卡号生成工具,支持多种卡类型和输出格式。
功能特性
- ✅ 支持多种国际卡类型(银联、Visa、MasterCard、AMEX、Discover)
- ✅ 可选 Luhn 算法校验
- ✅ 灵活的有效期生成(2026-2030)
- ✅ 多种输出格式(Pipe、JSON、CSV、Pretty)
- ✅ 批量生成支持
技术实现
卡号生成算法
纯随机生成
卡号 = 固定前缀 + 随机数字
Luhn算法生成
1. 固定前缀 + 随机数字(n-1位)
2. 计算校验位
3. 附加校验位得到完整卡号
有效期生成
月份: random(1-12) → 格式化为两位数 "01"-"12"
年份: random(26-30) → 格式化为两位数 "26"-"30"
CVV生成
CVV = random(0, 10^cvvLength - 1) → 格式化为指定位数
配置说明
卡类型配置结构
{
name: '卡类型名称',
prefix: '卡号前缀',
length: 卡号总长度,
cvvLength: CVV长度,
useLuhn: 是否使用Luhn算法
}
添加新卡类型
编辑 src/tools/card-generator/config.js:
CARD_TYPES.newcard = {
name: '新卡类型',
prefix: '123456',
length: 16,
cvvLength: 3,
useLuhn: true
};
API 参考
CardGenerator 类
const CardGenerator = require('./generator');
const generator = new CardGenerator();
方法
generate(type)
- 参数:
type(string) - 卡类型,默认 'unionpay' - 返回:Object - 包含 number, month, year, cvv, type
generateBatch(count, type)
- 参数:
count(number) - 生成数量type(string) - 卡类型,默认 'unionpay'
- 返回:Array - 卡信息数组
getSupportedTypes()
- 返回:Array - 所有支持的卡类型
Formatter 类
const Formatter = require('./formatter');
const formatter = new Formatter();
方法
format(card, format)
- 参数:
card(Object) - 卡信息对象format(string) - 格式类型,默认 'pipe'
- 返回:string - 格式化后的字符串
formatBatch(cards, format)
- 参数:
cards(Array) - 卡信息数组format(string) - 格式类型
- 返回:string - 格式化后的字符串(多行)
使用示例
基础用法
# 生成单张银联卡
node src/index.js card
# 生成Visa卡
node src/index.js card -t visa
# 批量生成
node src/index.js card -n 10
不同格式输出
# Pipe格式(默认)
node src/index.js card
# 输出: 6228367541234567|08|28|456
# JSON格式
node src/index.js card -f json
# CSV格式
node src/index.js card -f csv
# 美化格式
node src/index.js card -f pretty
编程使用
const CardGenerator = require('./src/tools/card-generator/generator');
const Formatter = require('./src/tools/card-generator/formatter');
const generator = new CardGenerator();
const formatter = new Formatter();
// 生成单张卡
const card = generator.generate('visa');
console.log(formatter.format(card, 'pipe'));
// 批量生成
const cards = generator.generateBatch(5, 'unionpay');
cards.forEach(card => {
console.log(formatter.format(card, 'pipe'));
});
测试验证
手动测试
# 测试不同卡类型
node src/index.js card -t unionpay
node src/index.js card -t visa
node src/index.js card -t mastercard
node src/index.js card -t amex
node src/index.js card -t discover
# 测试批量生成
node src/index.js card -n 20
# 测试不同格式
node src/index.js card -f json
node src/index.js card -f csv
node src/index.js card -f pretty
Luhn算法验证
# 生成Visa卡(使用Luhn算法)
node src/index.js card -t visa -f json
# 使用在线工具验证卡号
# https://www.freeformatter.com/credit-card-number-generator-validator.html
常见问题
Q: 为什么银联卡不使用Luhn算法?
A: 可以在配置中启用。默认不启用是为了保持与原始样本数据的一致性。
Q: 如何修改有效期范围?
A: 编辑 src/tools/card-generator/config.js 中的 EXPIRY_CONFIG。
Q: 生成的卡号能用于真实交易吗?
A: 绝对不能! 这些是测试用的虚拟卡号,没有任何实际价值。
Q: 如何添加自定义输出格式?
A: 在 config.js 的 OUTPUT_FORMATS 中添加新格式:
OUTPUT_FORMATS.custom = {
name: '自定义格式',
formatter: (card) => `${card.number} - ${card.month}/${card.year} - ${card.cvv}`
};
扩展建议
- 支持自定义前缀和长度
- 添加卡号验证功能
- 支持配置文件导入卡类型
- 生成完整的持卡人信息(姓名、地址等)
- 支持特定BIN(银行识别码)生成