MFC Examples

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

MFC Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
Diffie-Hellman
DKIM / DomainKey
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


 

 

 

 

 

 

 

 

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
// Needs #include <CkCrypt2.h>

    CkString strOut;

    CkCrypt2 crypt;

    bool success;
    success = crypt.UnlockComponent("Anything for 30-day trial");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        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);

    strOut.append(encryptedText);
    strOut.append("\r\n");

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

    strOut.append(decryptedText);
    strOut.append("\r\n");

    SetDlgItemText(IDC_EDIT1,strOut.getUnicode());

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

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