Sample code for 30+ languages & platforms
Tcl

Manually Duplicate SetSecretKeyViaPassword

Demonstrates 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.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set crypt [new_CkCrypt2]

# 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_put_CryptAlgorithm $crypt "aes"
CkCrypt2_put_KeyLength $crypt 256

set password "this is my password"
CkCrypt2_SetSecretKeyViaPassword $crypt $password

# Examine the resulting SecretKey in hex:
puts "Computed Secret Key = [CkCrypt2_getEncodedKey $crypt hex]"

# Now perform the same computation manually:
set sb [new_CkStringBuilder]

CkCrypt2_put_HashAlgorithm $crypt "md5"
CkCrypt2_put_Charset $crypt "utf-8"
CkCrypt2_put_EncodingMode $crypt "hex"
CkStringBuilder_Append $sb [CkCrypt2_hashStringENC $crypt $password]

set passwordBase64 [CkCrypt2_encodeString $crypt $password "utf-8" "base64"]
CkStringBuilder_Append $sb [CkCrypt2_hashStringENC $crypt $passwordBase64]

puts "Manually Computed = [CkStringBuilder_getAsString $sb]"

# The output is:
# Computed Secret Key = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36
# Manually Computed = 210D53992DFF432EC1B1A9698AF9DA16C7E90518F90E24828F78EC9E0A413B36

delete_CkCrypt2 $crypt
delete_CkStringBuilder $sb