Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

RSA Encrypt and Decrypt Credit Card Numbers

See more RSA Examples

_LANGUAGE_ sample code to RSA public-key encrypt and decrypt credit card numbers. The RSA key is loaded from an unencrypted PKCS8 file. Chilkat provides many ways of setting the key -- loading from both encrypted and unencrypted PEM, PKCS8, DER, PVK, etc. Keys may be loaded from files or in-memory representations. (The RSA component also provides the ability to generate RSA keys.)

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.PrivateKey;
import com.chilkatsoft.chilkat2.PublicKey;
import com.chilkatsoft.chilkat2.Rsa;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example assumes the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Rsa rsa = new Rsa();

        PrivateKey privKey = new PrivateKey();

        // Load an RSA private key from a file:
        try {
            privKey.loadAnyFormatFile("rsaPrivateKey.key", "");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Get the public part of the private key.
        PublicKey pubKey = new PublicKey();
        privKey.toPublicKey(pubKey);

        try {
            rsa.usePublicKey(pubKey);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Encrypt a VISA credit card number:
        // 1234-5678-0000-9999
        String ccNumber = "1234567800009999";

        boolean usePrivateKey = false;
        rsa.setEncodingMode("base64");
        String encryptedStr = rsa.encryptStringENC(ccNumber, usePrivateKey);
        System.out.println("Encrypted:");
        System.out.println(encryptedStr);

        // Now decrypt:
        Rsa rsaDecryptor = new Rsa();

        rsaDecryptor.setEncodingMode("base64");
        rsaDecryptor.usePrivateKey(privKey);

        usePrivateKey = true;
        String decryptedStr = rsaDecryptor.decryptStringENC(encryptedStr, usePrivateKey);

        System.out.println("Decrypted:");
        System.out.println(decryptedStr);

        // Important: RSA encryption should only be used to encrypt small amounts of data.
        // It is typically used for encrypting symmetric encryption
        // keys such that a symmetric encryption algorithm, such as
        // AES is then used to encrypt/decrypt bulk data.
    }
}