有高手知道下面的加密程序的原理吗?

Johnny_de 2005-08-15 01:06:10
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
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2005-11-04
  • 打赏
  • 举报
回复
问题解决了吗?
northwolves 2005-11-04
  • 打赏
  • 举报
回复
http://www.boardy.de/showthread.php3?threadid=34332635
tokyfeng228 2005-11-04
  • 打赏
  • 举报
回复
云,什么啊
Johnny_de 2005-11-03
  • 打赏
  • 举报
回复
大家进来领分。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧