![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Manually Duplicate SetSecretKeyViaPasswordDemonstrates how to duplicate the password string to binary secret key computation of SetSecretKeyViaPassword. This is a cryptographically weak way of generating a secret key from a password. The SetSecretKeyViaPassword method is deprecated and should not be used.
IncludeFile "CkCrypt2.pb" IncludeFile "CkStringBuilder.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; 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::setCkCryptAlgorithm(crypt, "aes") CkCrypt2::setCkKeyLength(crypt, 256) password.s = "this is my password" CkCrypt2::ckSetSecretKeyViaPassword(crypt,password) ; Examine the resulting SecretKey in hex: Debug "Computed Secret Key = " + CkCrypt2::ckGetEncodedKey(crypt,"hex") ; Now perform the same computation manually: sb.i = CkStringBuilder::ckCreate() If sb.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkHashAlgorithm(crypt, "md5") CkCrypt2::setCkCharset(crypt, "utf-8") CkCrypt2::setCkEncodingMode(crypt, "hex") CkStringBuilder::ckAppend(sb,CkCrypt2::ckHashStringENC(crypt,password)) passwordBase64.s = CkCrypt2::ckEncodeString(crypt,password,"utf-8","base64") CkStringBuilder::ckAppend(sb,CkCrypt2::ckHashStringENC(crypt,passwordBase64)) Debug "Manually Computed = " + CkStringBuilder::ckGetAsString(sb) ; The output is: ; Computed Secret Key = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36 ; Manually Computed = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36 CkCrypt2::ckDispose(crypt) CkStringBuilder::ckDispose(sb) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.