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

 

 

 

 

 

 

 

 

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
#include <C_CkCrypt2.h>

void ChilkatSample(void)
    {
    HCkCrypt2 crypt;
    BOOL success;
    const char * plainText;
    const char * encryptedText;
    const char * decryptedText;

    crypt = CkCrypt2_Create();

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

    //  Set properties for PBES2 encryption:

    CkCrypt2_putCryptAlgorithm(crypt,"pbes2");
    CkCrypt2_putPbesPassword(crypt,"mySecretPassword");

    //  Set the underlying PBE algorithm (and key length):
    CkCrypt2_putPbesAlgorithm(crypt,"rc2");
    CkCrypt2_putKeyLength(crypt,128);
    //  Only required for the RC2 algorithm:
    CkCrypt2_putRc2EffectiveKeyLength(crypt,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:
    CkCrypt2_SetEncodedIV(crypt,"0000000000000000","hex");

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

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

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

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

    plainText = "To be encrypted.";

    encryptedText = CkCrypt2_encryptStringENC(crypt,plainText);

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

    //  Now decrypt:

    decryptedText = CkCrypt2_decryptStringENC(crypt,encryptedText);

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

    CkCrypt2_Dispose(crypt);

    }

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

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