Visual C++ Examples

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

C++ Examples

CkString
Byte Array
Bounced Mail
Bz2
Character Encoding
CSV
DH Key Exchange
DKIM/DomainKeys
Digital Certificates
Digital Signatures
DSA
Email
Email Object
Encryption
FTP
HTML Conversion
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...
Amazon S3
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

 

 

 

 

 

 

 

 

PBES2 Password-Based Encryption (PBE)

Demonstrates how to implement password-based encryption according to the PKCS #5 v2.0: Password-Based Cryptography Standard (published by RSA Laboratories). This example uses PBES2, which ise based on the PBKDF2 function and an underlying block cipher such as RC2, DES, etc.

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 <CkCrypt2.h>

void ChilkatSample(void)
    {
    CkCrypt2 crypt;

    bool success;
    success = crypt.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        printf("%s\n",crypt.lastErrorText());
        return;
    }

    //  Set properties for PBES2 encryption:

    crypt.put_CryptAlgorithm("pbes2");
    crypt.put_PbesPassword("mySecretPassword");

    //  Set the underlying PBE algorithm (and key length):
    crypt.put_PbesAlgorithm("rc2");
    crypt.put_KeyLength(128);
    //  Only required for the RC2 algorithm:
    crypt.put_Rc2EffectiveKeyLength(128);

    //  By definition, the block encryption algorithm (RC2 or whichever
    //  was selected) will run in CBC mode.  Therefore, we need
    //  an IV.  The IV is equal in length to the block size of the
    //  algorithm.  RC2 has a block size of 8 bytes (regardless of
    //  key length), so set the IV to some value that is 8 bytes
    //  in length:
    crypt.SetEncodedIV("0000000000000000","hex");

    //  Give it some salt:
    crypt.SetEncodedSalt("0102030405060708","hex");

    //  A higher iteration count makes the algorithm more
    //  computationally expensive and therefore exhaustive
    //  searches (for breaking the encryption) is more difficult:
    crypt.put_IterationCount(1024);

    //  A hash algorithm needs to be set for PBES2:
    crypt.put_HashAlgorithm("sha1");

    //  Indicate that the encrypted bytes should be returned
    //  as a hex string:
    crypt.put_EncodingMode("hex");

    const char * plainText;
    plainText = "To be encrypted.";

    const char * encryptedText;
    encryptedText = crypt.encryptStringENC(plainText);

    printf("%s\n",encryptedText);

    //  Now decrypt:
    const char * decryptedText;
    decryptedText = crypt.decryptStringENC(encryptedText);

    printf("%s\n",decryptedText);
    }

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

Mail Component · .NET Mail Component · XML Parser