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


 

 

 

 

 

 

 

 

File Encryption / Decryption

File-to-file encryption in MFC using AES, Blowfish, RC2, ARC4, or 3DES.

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 component unlock failed\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    crypt.put_CryptAlgorithm("aes");
    crypt.put_CipherMode("cbc");
    crypt.put_KeyLength(128);

    const char * key;
    //  16 bytes of key for 128-bit encryption.
    key = "1234567890123456";

    //  The IV is equal to the block size of the encryption algorithm.
    const char * iv;
    iv = "1234567890123456";

    //  Set the key.
    crypt.SetEncodedKey(key,"ascii");

    //  Set the IV
    crypt.SetEncodedIV(iv,"ascii");

    //  AES Encrypt the file (the file may be any size because it will
    //  stream the file in/out.
    success = crypt.CkEncryptFile("hamlet.xml","aesEncrypted.dat");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  AES Decrypt the file (the file may be any size because it will
    //  stream the file in/out.
    success = crypt.CkDecryptFile("aesEncrypted.dat","hamlet_aes.xml");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    strOut.append("AES File Encryption Success.\r\n");

    //  Now do 3DES file encryption:

    //  To use Triple-DES, set the algorithm = "des",
    //  and the key length = 168.
    //  To use DES, set the key length = 56 bits.
    crypt.put_CryptAlgorithm("des");
    crypt.put_CipherMode("cbc");
    crypt.put_KeyLength(168);

    //  3DES Encrypt the file
    success = crypt.CkEncryptFile("hamlet.xml","tripleDesEncrypted.dat");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  3DES Decrypt the file
    success = crypt.CkDecryptFile("tripleDesEncrypted.dat","hamlet_3des.xml");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    strOut.append("3DES File Encryption Success.\r\n");

    //  Do Blowfish file encryption:

    //  To use Blowfish, set the algorithm = "blowfish2".
    //  The original Chilkat "blowfish" implementation outputs
    //  4321 swapped bytes.  "blowfish2" output is in the correct
    //  byte order.
    crypt.put_CryptAlgorithm("blowfish2");
    crypt.put_CipherMode("cbc");
    crypt.put_KeyLength(128);

    //  Blowfish Encrypt the file
    success = crypt.CkEncryptFile("hamlet.xml","blowfishEncrypted.dat");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  Blowfish Decrypt the file
    success = crypt.CkDecryptFile("blowfishEncrypted.dat","hamlet_blowfish.xml");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    strOut.append("Blowfish File Encryption Success.\r\n");

    //  Do RC2 file encryption:

    //  To use RC2, set the algorithm = "rc2".
    //  Also, set the Rc2EffectiveKeyLength property.
    crypt.put_CryptAlgorithm("rc2");
    crypt.put_CipherMode("cbc");
    //  Key length and effective key length should range
    //  from 8 to 1024 bits.
    crypt.put_KeyLength(128);
    crypt.put_Rc2EffectiveKeyLength(128);

    //  RC2 Encrypt the file
    success = crypt.CkEncryptFile("hamlet.xml","rc2Encrypted.dat");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  RC2 Decrypt the file
    success = crypt.CkDecryptFile("rc2Encrypted.dat","hamlet_rc2.xml");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    strOut.append("RC2 File Encryption Success.\r\n");

    //  Do ARC4 file encryption:

    //  To use ARC4, set the algorithm = "arc4".
    crypt.put_CryptAlgorithm("arc4");
    crypt.put_KeyLength(128);

    //  ARC4 Encrypt the file
    success = crypt.CkEncryptFile("hamlet.xml","arc4Encrypted.dat");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    //  ARC4 Decrypt the file
    success = crypt.CkDecryptFile("arc4Encrypted.dat","hamlet_arc4.xml");
    if (success != true) {
        strOut.append(crypt.lastErrorText());
        strOut.append("\r\n");
        SetDlgItemText(IDC_EDIT1,strOut.getUnicode());
        return;
    }

    strOut.append("ARC4 File Encryption Success.\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.