Attribute VB_Name = "basPBKDF2" Option Explicit Option Base 0 Public Function Test_PBKDF2() ' This example uses PBKDF2 as defined in PKCS #5 v2.0 ' from test vectors provided by Dr. Stephen Henson (drh@celocom.com), ' The password is "password" (without quotes). ' This derived key is for the 'des-ede3-cbc' example in the test vectors ' and therefore needs to be 24 bytes long. Dim abDerivedKey() As Byte Dim lngKeyLen As Long Dim sPassword As String Dim abPwdBytes() As Byte Dim abSalt(7) As Byte Dim lngCount As Long Dim lngRet As Long ' Convert password String to an array of Bytes sPassword = "password" abPwdBytes = StrConv(sPassword, vbFromUnicode) ' Set 8-byte salt = 78 57 8E 5A 5D 63 CB 06 abSalt(0) = &H78 abSalt(1) = &H57 abSalt(2) = &H8E abSalt(3) = &H5A abSalt(4) = &H5D abSalt(5) = &H63 abSalt(6) = &HCB abSalt(7) = &H6 ' Iteration count is 2048 lngCount = 2048 ' Pre-dimension output for derived key to required length of 24 bytes ' (Don't forget to do this) lngKeyLen = 24 ReDim abDerivedKey(lngKeyLen - 1) ' Derive PBKDF2 key using function from CryptoSys lngRet = PBE_Kdf2(abDerivedKey(0), lngKeyLen, abPwdBytes(0), Len(sPassword), abSalt(0), 8&, lngCount, 0&) ' Convert bytes to hex and print Debug.Print "Derived key = " & cv_HexFromBytes(abDerivedKey) 'Correct Derived key = BFDE6BE94DF7E11DD409BCE20A0255EC327CB936FFE93643 End Function Public Function Test_PBKDF2_Longer() Dim abDerivedKey() As Byte Dim lngKeyLen As Long Dim sPassword As String Dim abPwdBytes() As Byte Dim abSalt(7) As Byte Dim lngCount As Long Dim lngRet As Long ' Convert password String to an array of Bytes sPassword = "password" abPwdBytes = StrConv(sPassword, vbFromUnicode) ' Set 8-byte salt = 78 57 8E 5A 5D 63 CB 06 abSalt(0) = &H78 abSalt(1) = &H57 abSalt(2) = &H8E abSalt(3) = &H5A abSalt(4) = &H5D abSalt(5) = &H63 abSalt(6) = &HCB abSalt(7) = &H6 ' Iteration count is 2048 lngCount = 2048 ' Pre-dimension output for derived key to required length of 24 bytes ' (Don't forget to do this) lngKeyLen = 64 ReDim abDerivedKey(lngKeyLen - 1) ' Derive PBKDF2 key using function from CryptoSys lngRet = PBE_Kdf2(abDerivedKey(0), lngKeyLen, abPwdBytes(0), Len(sPassword), abSalt(0), 8&, lngCount, 0&) ' Convert bytes to hex and print Debug.Print "Derived key = " & cv_HexFromBytes(abDerivedKey) End Function