Programming Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

C Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3

 

 

 

 

 

 

 

 

RSA Encrypt and Decrypt Credit Card Numbers

C 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.)

Downloads:

MS Windows Visual C/C++ Libraries
Linux/CentOS C/C++ Libraries
MAC OS X C/C++ Libraries
Solaris C/C++ Libraries
C++ Builder Libraries
FreeBSD C++ Libraries
HP-UX C++ Libraries
BlackBerry QNX C++ Libraries
#include <C_CkRsa.h>
#include <C_CkPrivateKey.h>

void ChilkatSample(void)
    {
    HCkRsa rsa;
    BOOL success;
    HCkPrivateKey key;
    const char * keyXml;
    const char * ccNumber;
    BOOL usePrivateKey;
    const char * encryptedStr;
    HCkRsa rsaDecryptor;
    const char * decryptedStr;

    rsa = CkRsa_Create();

    success = CkRsa_UnlockComponent(rsa,"Anything for 30-day trial");
    if (success != TRUE) {
        printf("%s\n",CkRsa_lastErrorText(rsa));
        return;
    }

    key = CkPrivateKey_Create();

    //  Load an RSA private key from a PKCS8 file:
    success = CkPrivateKey_LoadPkcs8File(key,"rsaPrivateKey.p8");
    if (success != TRUE) {
        printf("%s\n",CkPrivateKey_lastErrorText(key));
        return;
    }

    //  Get the key as XML:

    keyXml = CkPrivateKey_getXml(key);

    //  We'll encrypt with the public key and decrypt with the private
    //  key.  (It's also possible to do the reverse.)
    //  Note: An RSA private key is composed of different parts internally: modulus, exponent, P, Q, etc.
    //  An RSA public-key is a sub-set of the private key.
    //  Therefore, when you have a private key, you really have
    //  both public and private keys.
    success = CkRsa_ImportPublicKey(rsa,keyXml);
    if (success != TRUE) {
        printf("%s\n",CkRsa_lastErrorText(rsa));
        return;
    }

    //  Encrypt a VISA credit card number:
    //  1234-5678-0000-9999

    ccNumber = "1234567800009999";

    usePrivateKey = FALSE;
    CkRsa_putEncodingMode(rsa,"base64");

    encryptedStr = CkRsa_encryptStringENC(rsa,ccNumber,usePrivateKey);
    printf("Encrypted:\n");
    printf("%s\n",encryptedStr);

    //  Now decrypt:
    rsaDecryptor = CkRsa_Create();

    CkRsa_putEncodingMode(rsaDecryptor,"base64");
    CkRsa_ImportPrivateKey(rsaDecryptor,keyXml);

    usePrivateKey = TRUE;

    decryptedStr = CkRsa_decryptStringENC(rsaDecryptor,encryptedStr,usePrivateKey);

    printf("Decrypted:\n");
    printf("%s\n",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.


    CkRsa_Dispose(rsa);
    CkPrivateKey_Dispose(key);
    CkRsa_Dispose(rsaDecryptor);

    }

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.