GithubHelp home page GithubHelp logo

angels7777 / creditcardnumber Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sualeh/creditcardnumber

1.0 0.0 0.0 850 KB

Java library that can provide details of a bank issued credit card number

License: Other

Java 99.72% Dockerfile 0.28%

creditcardnumber's Introduction

Quick Build The Central Repository

Credit Card Number

Credit Card Number is a Java library that can provide details of a bank issued credit card number.

(Also see Magnetic Track Parser.)

The goal of this project is to use publicly and freely available documentation to create a reliable Java library to provide information about credit card numbers.

Resources

Some resources consulted are:

Design Principles

  • All classes are immutable and thread-safe
  • Secure data follows standards in the Java Cryptography Architecture (JCA) Reference Guide
  • The standard toString() function formats data in a readable form
  • Internationalization of card numbers is supported
  • Validity is enforced by JUnit 5 tests
  • Java 8 or newer is required
  • Android friendly

Download and Use in Projects

You can download the jar on the Maven Central Repository. The download page has instructions on how to use the library in your Maven or Gradle build.

Examples

How to Get Bank Card Information

To get bank card information, use code like:

AccountNumber pan = AccountNumbers.completeAccountNumber("5266-0922-0141-6174");
ExpirationDate expiration = new ExpirationDate(2015, 4);
Name name = new Name("Sualeh", "Fatehi");
ServiceCode serviceCode = new ServiceCode("225");
BankCard card = new BankCard(pan, expiration, name, serviceCode);
System.out.println(card);

and you will get this output:

Bank Card Information:
  Raw Account Number: 5266-0922-0141-6174
  Primary Account Number: 5266092201416174
    Major Industry Identifier: 5 - Banking and financial
    Issuer Identification Number: 52660922
    Card Brand: MasterCard
    Last Four Digits: 6174
    Passes Luhn Check? Yes
    Is Primary Account Number Valid? Yes
  Expiration Date: 2015-04
    Is Expired? Yes
  Name: Sualeh Fatehi
  Service Code:
    2 - Interchange: International interchange. Technology: Integrated circuit card.
    2 - Authorization Processing: By issuer.
    5 - Allowed Services: Goods and services only. PIN Requirements: PIN required.

How to Secure the Credit Card Number

If you need the account number information, but want to be secure by not storing the actual primary account number in memory, you can use code like:

AccountNumber pan = AccountNumbers.completeAccountNumber("5266-0922-0141-6174");
pan.dispose();
System.out.println(pan.getAccountNumber());

and you will get this output:

null

The account number is no longer retained in memory. Even though the memory has been cleared of the account number, you may want to allow the original reference to be garbage collected by doing this:

// (Call dispose() first)
AccountNumber securePan = pan.toSecureAccountNumber();

How to Encrypt the Credit Card Number

If you need the account number information, but want to encrypt it using a cryptographic algorithm such as AES, you can use code like:

AccountNumber sealedPan = AccountNumbers.sealedAccountNumber("5266-0922-0141-6174", cipher);
System.out.println(sealedPan.getAccountNumber());

and you will get this output:

null

The account number can be decrypted by doing this:

AccountNumber pan = AccountNumbers.completeAccountNumber(sealedPan, key);
System.out.println(pan.getAccountNumber());

The cipher and key are from javax.crypto and java.security.

Internationalization is Supported

You can use code like:

AccountNumber pan = AccountNumbers.completeAccountNumber("५२६६ ०९२२ ०१४१ ६१७४");
System.out.println(pan.getAccountNumber());

and you will get this output:

5266092201416174

Look-ahead Typing

The Credit Card Number library allows look-ahead typing and identifies the card brand by at least the first four digits of the card number.

You can use code like:

CardBrand cardBrand = CardBrand.from("5366");
System.out.println(cardBrand);

and you will get this output:

MasterCard

creditcardnumber's People

Contributors

sualeh avatar dependabot[bot] avatar mbayerpk avatar mariusvolkhart avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.