DataFlex
DataFlex
Password_Digest = Base64 (SHA-1 ( nonce + created + SHA-1 (password) ) )
See more Encryption Examples
Demonstrates how to compute:Password_Digest = Base64 (SHA-1 ( nonce + created + SHA-1 (password)))
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
String sPassword
Handle hoCrypt
Handle hoPrng
Variant vBd
Handle hoBd
Boolean iSuccess
Handle hoDt
String sCreated
String sPasswordSha1
String sPasswordDigest
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Move "secret" To sPassword
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
Set ComHashAlgorithm Of hoCrypt To "SHA-1"
Set ComEncodingMode Of hoCrypt To "base64"
// Generate a 16-byte random nonce
Get Create (RefClass(cComChilkatPrng)) To hoPrng
If (Not(IsComObjectCreated(hoPrng))) Begin
Send CreateComObject of hoPrng
End
Get Create (RefClass(cComChilkatBinData)) To hoBd
If (Not(IsComObjectCreated(hoBd))) Begin
Send CreateComObject of hoBd
End
Get pvComObject of hoBd to vBd
Get ComGenRandomBd Of hoPrng 16 vBd To iSuccess
// Get the current date/time in a string with this format: 2010-06-08T07:26:50Z
Get Create (RefClass(cComCkDateTime)) To hoDt
If (Not(IsComObjectCreated(hoDt))) Begin
Send CreateComObject of hoDt
End
Get ComSetFromCurrentSystemTime Of hoDt To iSuccess
Get ComGetAsTimestamp Of hoDt False To sCreated
Get ComAppendString Of hoBd sCreated "utf-8" To iSuccess
// This example wishes to calculate a password digest like this:
// Password_Digest = Base64 ( SHA-1 ( nonce + created + SHA-1(password) ) )
// First SHA-1 digest the password...
Get ComHashStringENC Of hoCrypt sPassword To sPasswordSha1
// Append the 20 binary bytes of the SHA1 hash to bd, which already contains the nonce and created date/time.
Get ComAppendEncoded Of hoBd sPasswordSha1 "base64" To iSuccess
Get pvComObject of hoBd to vBd
Get ComHashBdENC Of hoCrypt vBd To sPasswordDigest
Showln "Base64 password digest = " sPasswordDigest
End_Procedure