Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
ASCII / ANSI Secret Key in Symmetric Encryption
Using an ASCII (or ANSI) secret key w/ symmetric encryption: AES, Blowfish, Twofish, RC2, 3DES, etc. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CHILKATCRYPT2Lib_TLB, OleCtrls; ... procedure TForm1.Button1Click(Sender: TObject); var crypt: TChilkatCrypt2; success: Integer; encKey: String; text: String; encText: String; decryptedText: String; begin crypt := TChilkatCrypt2.Create(Self); success := crypt.UnlockComponent('Anything for 30-day trial'); if (success <> 1) then begin ShowMessage('Crypt component unlock failed'); end; // A frequent support question goes something like this: // ------------------ // I am not able to decrypt strings encrypted using // cryptix.jce.provider.key.RawSecretKey (Java) like I would normally do. // The key generation is being done with the Rijndael algorithm (256-bit) // The AES encryption algorithm is "Rijndael/ECB/PKCS#5" // The 32 character source key I'm using is this: // 1234567890123456789012345678912 // // ------------------ // The customer tries to call GenerateSecretKey to // convert the 32-character source key to a binary secret key, // but this is incorrect (in this case). GenerateSecretKey // hashes a string of any length and produces binary hash output // that is of the appropriate size to be used as a secret key. // The telltale sign is that in this case, the string is the exact // length of the secret key. 32 ANSI characters = 256 bits. // Therefore, it is obvious that the bytes of the binary // secret key should be the exact ascii character values // of the string. encKey := '1234567890123456789012345678912'; crypt.CryptAlgorithm := 'aes'; // Mode is "ecb" or "cbc" crypt.CipherMode := 'ecb'; crypt.KeyLength := 256; // Call SetEncodedKey with "ascii" to tell the component // to use the ascii-bytes as the binary secret key. // Make sure you call this after setting the KeyLength. crypt.SetEncodedKey(encKey,'ascii'); crypt.EncodingMode := 'base64'; text := 'The quick brown fox jumped over the lazy dog.'; // Encrypt a string and return the binary encrypted data // in a base-64 encoded string. encText := crypt.EncryptStringENC(text); Memo1.Lines.Add(encText); // Decrypt and show the original string: decryptedText := crypt.DecryptStringENC(encText); Memo1.Lines.Add(decryptedText); end; |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2008 Chilkat Software, Inc. All Rights Reserved.