有高手知道下面的加密程序的原理吗?
Public Function EnDeCrypt(ByVal Text As String, ByVal Key As String, Encrypt As Boolean)
Dim lngLength As Long
Dim lngSALTLen As Long
Dim lngReturnValue As Long
hSessionKey = 0
lngSALTLen = 0
KeyFromPW Key 'Passwort in Key umwandeln
If Encrypt Then
lngReturnValue = CryptGetKeyParam(hSessionKey, KP_SALT, vbNull, lngSALTLen, 0) 'String mit Verschlüsselungsspezifikationen
strSALT = String(lngSALTLen + 1, vbNullChar)
'lngReturnValue = CryptGenRandom(hCryptProv, lngSALTLen, strSALT)
'If lngReturnValue = 0 Then err.Raise err.LastDllError, , "Dll gab Fehler aus. SALT konnte nicht berechnet werden!"
Else
'strSALT = String(lngSALTLen + 1, "a")
End If
lngReturnValue = CryptSetKeyParam(hSessionKey, KP_SALT, strSALT, 0) ' strSALT setzen
If lngReturnValue = 0 Then Err.Raise Err.LastDllError, , "DLL-Fehler: Konnte SALT nicht setzen."
lngLength = Len(Text)
If Encrypt Then 'Verschlüsseln
lngReturnValue = CryptEncrypt(hSessionKey, 0, 1, 0, Text, lngLength, lngLength)
If lngReturnValue = 0 Then Err.Raise Err.LastDllError, , "Fehler während des Encrypt-Vorgangs."
Else 'Entschlüsseln
lngReturnValue = CryptDecrypt(hSessionKey, 0, 1, 0, Text, lngLength)
If lngReturnValue = 0 Then Err.Raise Err.LastDllError, , "Fehler während des Decrypt-Vorgangs."
End If
EnDeCrypt = Left$(Text, lngLength)
If hSessionKey <> 0 Then CryptDestroyKey hSessionKey 'Key zerstören
End Function