A fast, flexible, and customizable credit card number generator library for Rust.
Generate valid (Luhn-compliant) credit card numbers for testing, QA, and development purposes.
- Features
- Installation
- Usage
- API Reference
- Input Validation
- Testing
- Continuous Integration (CI)
- Contributing
- License
- Disclaimer
- Generate valid credit card numbers using the Luhn algorithm
- Customizable BIN patterns (with support for 'x' wildcards)
- Specify or randomize expiration month, year, and CVV
- Generate single or multiple cards at once
- Input validation for all fields
- Designed for easy integration and extension
- Comprehensive test suite
Add ccgen_rs to your Cargo.toml:
[dependencies]
ccgen_rs = "0.1.0"use ccgen_rs::{GeneratorOptions, Generate_Cards};
let opts = GeneratorOptions {
bin_pattern: "411111xxxxxxxxxx", // Visa BIN with 10 random digits
month: Some(12),
year: Some(2030),
cvv: Some(123),
amount: Some(3),
};
let cards = Generate_Cards(&opts);
for card in cards {
println!("{}|{}|{}|{}", card.number, card.month, card.year, card.cvv);
}let opts = GeneratorOptions {
bin_pattern: "5xxxxxxxxxxxxxxx", // MasterCard BIN with 15 random digits
month: None, // random month
year: None, // random year
cvv: None, // random cvv
amount: Some(5),
};
let cards = Generate_Cards(&opts);pub struct GeneratorOptions<'a> {
pub bin_pattern: &'a str, // 16 chars, digits or 'x'
pub month: Option<usize>, // 1-12
pub year: Option<usize>, // 2025-2050
pub cvv: Option<usize>, // 0-999
pub amount: Option<usize>,// number of cards to generate
}pub struct CardInfo {
pub number: String, // 16-digit Luhn-valid card number
pub month: String, // MM
pub year: String, // YYYY
pub cvv: String, // 3 digits
}pub fn Generate_Cards(opts: &GeneratorOptions) -> Vec<CardInfo>- Returns a vector of generated cards based on the provided options.
- Returns an empty vector if input is invalid (e.g., bad BIN pattern, out-of-range month/year/cvv).
bin_patternmust be 16 or fewer characters, only digits or 'x'.monthmust be 1-12.yearmust be 2025-2050.cvvmust be 0-999.- Invalid input returns an empty vector.
Run the test suite with:
cargo testThe project includes 22+ tests covering edge cases, input validation, and Luhn compliance.
This project uses GitHub Actions for CI. Two workflows are provided:
- Cargo Test Workflow: Runs
cargo teston every push and pull request to ensure all tests pass. - Cargo Build Workflow: Runs
cargo buildto verify the project builds successfully.
You can find these workflows in .github/workflows/.
Contributions are welcome! Please open issues or submit pull requests for bug fixes, new features, or improvements.
- Fork the repository
- Create a feature branch
- Commit your changes
- Open a pull request
This project is licensed under the MIT License. See LICENSE for details.
This library is for testing and development purposes only. Do not use generated card numbers for fraudulent or illegal activities.
