Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
|
3DES Encryption (Triple-DES, 168-bit, TDEA, TDES)Demonstrates 168-bit 3DES encryption.
LOCAL loCrypt LOCAL lnSuccess LOCAL lcCipherText LOCAL lcPlainText loCrypt = CreateObject('Chilkat.Crypt2') lnSuccess = loCrypt.UnlockComponent("Anything for 30-day trial") IF (lnSuccess <> 1) THEN * Unlock failed. =MESSAGEBOX(loCrypt.LastErrorText) QUIT ENDIF * To get 3DES, set the algorithm = "des", and the * key length to 168 bits: loCrypt.CryptAlgorithm = "des" loCrypt.KeyLength = 168 * The encrypted output will be a hex-encoded string. * It is also possible to use "base64", "url" (for url-encoding), and other modes. loCrypt.EncodingMode = "hex" * Both ECB and CBC modes are available. * Use "ecb" for Electronic Cookbook Mode. * "cbc" is for Cipher-Block-Chaining. loCrypt.CipherMode = "cbc" * Initialization vectors should equal the block-size of the algorithm. * for 3DES (and DES) the block-size is 8 bytes. * The IV may be set from an encoded string: loCrypt.SetEncodedIV("0102030405060708","hex") * (it is also possible to set the IV directly from a byte array...) * The secret key should have a length equal to the bit-strength of * the algorithm. In this case, we have 168-bit 3DES. However, * with DES (and 3DES) the most significant bit of each key byte is * a parity bit, and therefore 168-bits really refers to a 192-bit key * where the 24 msb's are parity bits. Our 3DES key should be 24 bytes in size. loCrypt.SetEncodedKey("010203040506070801020304050607080102030405060708","hex") * (it is also possible to set the key directly from a byte array, or generate * a key from a arbitrary-length string password.) * 3DES is a block encryption algorithm. This means that output is always * a multiple of the algorithm's block size. For 3DES, the block size is 8 bytes. * Therefore, if your input is not a multiple of 8 bytes, it will be padded. * There are several choices for padding (consult the Chilkat Crypt reference). * We'll pad with SPACE (0x20) characters: loCrypt.PaddingScheme = 4 * Note: If trying to match the results produced by two different 3DES implementations, * make sure to test with data that is longer than a single block (8 bytes for 3DES). * If all params match (IV, secret key, cipher mode, etc.) except for the padding, then * the results will be identical except for the last block of output. If you test data is only * a single block, you cannot recognize the situation where all is correct except * for a padding mismatch. lcCipherText = loCrypt.EncryptStringENC("ABCDEFGHIJKLMNLPQRSTUVWXYZ") ? lcCipherText lcPlainText = loCrypt.DecryptStringENC(lcCipherText) ? lcPlainText * Note: Because we used SPACE character padding, the output string will contain trailing SPACE * chars, which can easily be trimmed. * (Other padding schemes embed the original input length in the padding so that the Decrypt* methods always * return the exact original data). |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.
Mail Component · .NET Email Component · ASP Mail Component · XML Parser