Sample code for 30+ languages & platforms
Unicode C

RSA Encrypt with Modulus and Exponent

See more RSA Examples

Demonstrates how to RSA encrypt with a given modulus and exponent.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkRsaW.h>
#include <C_CkXmlW.h>
#include <C_CkPublicKeyW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkRsaW rsa;
    const wchar_t *modulus;
    const wchar_t *exponent;
    HCkXmlW xml;
    HCkPublicKeyW pubKey;
    BOOL usePrivateKey;
    const wchar_t *plainText;
    const wchar_t *encryptedStrBase64;

    success = FALSE;

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    rsa = CkRsaW_Create();

    // Assuming you already have a base64 modulus and exponent,
    // wrap it in XML like this:
    modulus = L"qMBRpdYrAy5aMmo31NErUizh5sbweguSmh4wlK6uJEIDl+kwTlROnE34KOFExeTbJSX0WygPi+vWl0yNq7buIMUKpytossAAWut5khO3CQJxTk7G2gnEPNUUXHiExGgNrLzcSLv8YIlfVALhoRWyC67KOL+a+3taNq3h+BHeWhM=";
    exponent = L"AQAB";

    xml = CkXmlW_Create();
    CkXmlW_putTag(xml,L"RSAPublicKey");
    CkXmlW_NewChild2(xml,L"Modulus",modulus);
    CkXmlW_NewChild2(xml,L"Exponent",exponent);

    pubKey = CkPublicKeyW_Create();
    success = CkPublicKeyW_LoadFromString(pubKey,xml);
    if (success == FALSE) {
        wprintf(L"%s\n",CkPublicKeyW_lastErrorText(pubKey));
        CkRsaW_Dispose(rsa);
        CkXmlW_Dispose(xml);
        CkPublicKeyW_Dispose(pubKey);
        return;
    }

    success = CkRsaW_UsePublicKey(rsa,pubKey);
    if (success == FALSE) {
        wprintf(L"%s\n",CkRsaW_lastErrorText(rsa));
        CkRsaW_Dispose(rsa);
        CkXmlW_Dispose(xml);
        CkPublicKeyW_Dispose(pubKey);
        return;
    }

    usePrivateKey = FALSE;
    plainText = L"message in a bottle";

    CkRsaW_putEncodingMode(rsa,L"base64");
    encryptedStrBase64 = CkRsaW_encryptStringENC(rsa,plainText,usePrivateKey);
    wprintf(L"%s\n",encryptedStrBase64);


    CkRsaW_Dispose(rsa);
    CkXmlW_Dispose(xml);
    CkPublicKeyW_Dispose(pubKey);

    }