Delphi DLL Requires Chilkat v11.0.0+
Delphi DLL
Workaround for the deprecated Crypt2.DecryptBytesENC method
Shows how to replace the deprecated DecryptBytesENC method. (Chilkat is moving away from the use of CkByteData.)Chilkat Delphi DLL Downloads
var
success: Boolean;
crypt: HCkCrypt2;
unencryptedBytes: HCkByteData;
decryptedBytes: HCkByteData;
encryptedAsHex: PWideChar;
bd: HCkBinData;
bd2: HCkBinData;
begin
success := False;
crypt := CkCrypt2_Create();
CkCrypt2_putCryptAlgorithm(crypt,'aes');
CkCrypt2_putCipherMode(crypt,'cbc');
CkCrypt2_putKeyLength(crypt,128);
CkCrypt2_putPaddingScheme(crypt,0);
CkCrypt2_SetEncodedKey(crypt,'000102030405060708090A0B0C0D0E0F','hex');
CkCrypt2_SetEncodedIV(crypt,'000102030405060708090A0B0C0D0E0F','hex');
success := False;
// ------------------------------------------------------------------------
// The EncryptBytesENC and DecryptBytesENC methods are deprecated:
unencryptedBytes := CkByteData_Create();
CkByteData_appendEncoded(unencryptedBytes,'AABBCCDDEEFF01020304','hex');
decryptedBytes := CkByteData_Create();
CkCrypt2_putEncodingMode(crypt,'hex');
encryptedAsHex := CkCrypt2__encryptBytesENC(crypt,unencryptedBytes);
Memo1.Lines.Add('Encrypted: ' + encryptedAsHex);
success := CkCrypt2_DecryptBytesENC(crypt,encryptedAsHex,decryptedBytes);
// ------------------------------------------------------------------------
// Replace the above CkByteData usage with the following code:
// (Chilkat is moving away from using CkByteData)
bd := CkBinData_Create();
CkBinData_AppendEncoded(bd,'AABBCCDDEEFF01020304','hex');
// in-place encrypt, then get as hex.
CkCrypt2_EncryptBd(crypt,bd);
encryptedAsHex := CkBinData__getEncoded(bd,'hex');
Memo1.Lines.Add('Encrypted: ' + encryptedAsHex);
// load from hex, then decrypt.
bd2 := CkBinData_Create();
CkBinData_AppendEncoded(bd2,encryptedAsHex,'hex');
CkCrypt2_DecryptBd(crypt,bd2);
Memo1.Lines.Add('Decrypted: ' + CkBinData__getEncoded(bd2,'hex'));
CkCrypt2_Dispose(crypt);
CkByteData_Dispose(unencryptedBytes);
CkByteData_Dispose(decryptedBytes);
CkBinData_Dispose(bd);
CkBinData_Dispose(bd2);