Visual C++ Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Visual C++ Examples

CkString
Byte Array
Bounced Mail
Bz2
Character Encoding
CSV
DH Key Exchange
DKIM/DomainKeys
Digital Certificates
Digital Signatures
DSA
Email
Encryption
FTP
HTML-to-XML
HTTP
IMAP
MHT / HTML Email
POP3
RSA
S/MIME
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
XMP
Zip Compression


More Examples...
Email Object
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

 

 

 

 

 

 

 

 

RSA Encryption -- Same Key Different Results

The RSA encryption algorithm produces different results for each call, even when encrypting the same data with the same key. Decryption however, will produce the correct results. This example demonstrates.

Download Chilkat C++ Libraries for VC++ 8.0 / Win32

Download Chilkat C++ Libraries for VC++ 7.0 / Win32

Download Chilkat C++ Libraries for VC++ 6.0 / Win32

#include <CkRsa.h>
#include <CkString.h>

void ChilkatSample(void)
    {
    CkRsa rsa;

    bool success;
    success = rsa.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        printf("RSA component unlock failed\n");
        return;
    }

    //  RSA public key in XML format:
    CkString publicKey;
    publicKey = "<RSAKeyValue><Modulus>xxyv1RDPU0MvfFIIa98HppXdcuI7zSu8uIqyGAy/VoxPvxZFX0acajznvjVRHipHbpcO6ryo2LwXUPf89qOqLb3Qd1lfD2ZnH+TQ6MZXNxfFRxTpTUd+tTR4EBYpd2t6kzq8ZRJYLdlviaMQQqUEwR54k7Op5HJYVKUcHIkP1xE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

    CkString privateKey;
    privateKey = "<RSAKeyValue><Modulus>xxyv1RDPU0MvfFIIa98HppXdcuI7zSu8uIqyGAy/VoxPvxZFX0acajznvjVRHipHbpcO6ryo2LwXUPf89qOqLb3Qd1lfD2ZnH+TQ6MZXNxfFRxTpTUd+tTR4EBYpd2t6kzq8ZRJYLdlviaMQQqUEwR54k7Op5HJYVKUcHIkP1xE=</Modulus><Exponent>AQAB</Exponent><P>4cpW9fvG99Jsz8/AO7PDHTl+pPRAglksrR2kClLV2g9DEeFe/bvmCxLUgMCJ+0eGQ1zA6aA7McKr13zTQ7jKpQ==</P><Q>4cCS/kFlq/P1ExF37Fkh4pCodOEGutepLEG7Q/KljT3ZGlAY+2l8fGu4f+hrkUuGoFl7NOMaJflULoPIgQaq/Q==</Q><DP>lkjcSsvzqh3YKRXJiLNkyf3rypV8noYGU4+oEOsDxilkZfFRDafUPUiiQrRk4ui/d/SzvozU+ZDuWfaOk8PatQ==</DP><DQ>SYCD25i7W8Mwdibn3uIecEAdOQDTSh5RjIFSUYs9b8FFYJXXrHPp/jCsf6jS7RmkGa1Iui1/JAIL8KEjtS7QmQ==</DQ><InverseQ>EDAJa3TpNdPQ3GIdBpnTgFTQY5A60DcszsUW/iCYoXQdPVJ9BLBxVTe9jiLzGuNuzLkVBwQlCy0Bf84hACRV9A==</InverseQ><D>cMFdDYKkddlRNczaugOmOH8b1egpx2liSPs6GYZ2gFObAXJiPK8m+r6c2ckls7hrlUP0DZhi4cG6Tn7xANb0Ek17P7QquVhQYOmFy/YHzm+IJbcwwq7pJHhZBhtcjyXqfUZ+BADGE//GQbrSVwVltpOj5KcxG88NAprLn2MMxfE=</D></RSAKeyValue>";

    rsa.ImportPublicKey(publicKey);

    //  Encrypt a string and return the encrypted data base64-encoded:
    rsa.put_EncodingMode("base64");

    CkString plainText;
    plainText = "RSA gives different results with each call, weird but OK";

    bool usePrivateKey;
    usePrivateKey = false;
    CkString encryptedStr1;
    encryptedStr1 = rsa.encryptStringENC(plainText,usePrivateKey);
    printf("%s\n",(const char *)encryptedStr1);

    //  Do it again. The results are different...
    CkString encryptedStr2;
    encryptedStr2 = rsa.encryptStringENC(plainText,usePrivateKey);
    printf("%s\n",(const char *)encryptedStr2);

    //  Now decrypt both strings, and the results are correct
    //  in both cases:
    CkRsa rsa2;
    rsa2.ImportPrivateKey(privateKey);
    rsa2.put_EncodingMode("base64");
    usePrivateKey = true;

    CkString decryptedStr1;
    decryptedStr1 = rsa2.decryptStringENC(encryptedStr1,usePrivateKey);
    printf("%s\n",(const char *)decryptedStr1);

    CkString decryptedStr2;
    decryptedStr2 = rsa2.decryptStringENC(encryptedStr2,usePrivateKey);
    printf("%s\n",(const char *)decryptedStr2);


    }

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

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

Mail Component · .NET Mail Component · XML Parser