Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Manually Duplicate SetSecretKeyViaPasswordDemonstrates how to duplicate the password string to binary secret key computation of SetSecretKeyViaPassword.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Crypt2, StringBuilder; ... procedure TForm1.Button1Click(Sender: TObject); var crypt: HCkCrypt2; password: PWideChar; sb: HCkStringBuilder; passwordBase64: PWideChar; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. crypt := CkCrypt2_Create(); // The password string is transformed to a binary secret key by computing the // MD5 digest (of the utf-8 password) to obtain 16 bytes. // If the KeyLength is greater than 16 bytes, then the MD5 digest of the Base64 encoding // of the utf-8 password is added. A max of 32 bytes of key material is generated, and // this is truncated to the actual KeyLength required. CkCrypt2_putCryptAlgorithm(crypt,'aes'); CkCrypt2_putKeyLength(crypt,256); password := 'this is my password'; CkCrypt2_SetSecretKeyViaPassword(crypt,password); // Examine the resulting SecretKey in hex: Memo1.Lines.Add('Computed Secret Key = ' + CkCrypt2__getEncodedKey(crypt,'hex')); // Now perform the same computation manually: sb := CkStringBuilder_Create(); CkCrypt2_putHashAlgorithm(crypt,'md5'); CkCrypt2_putCharset(crypt,'utf-8'); CkCrypt2_putEncodingMode(crypt,'hex'); CkStringBuilder_Append(sb,CkCrypt2__hashStringENC(crypt,password)); passwordBase64 := CkCrypt2__encodeString(crypt,password,'utf-8','base64'); CkStringBuilder_Append(sb,CkCrypt2__hashStringENC(crypt,passwordBase64)); Memo1.Lines.Add('Manually Computed = ' + CkStringBuilder__getAsString(sb)); // The output is: // Computed Secret Key = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36 // Manually Computed = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36 CkCrypt2_Dispose(crypt); CkStringBuilder_Dispose(sb); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.