有高手知道下面的加密程序的原理吗?
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
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
...全文
相关推荐
DES原理及实现步骤,以及VC++关于DES加密解密的详细源程序
DES算法是这样工作的:如Mode为加密,则用Key 去把数据Data进行加密, 生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。在通信网络的两端,双方约定一致的Key,在通信的源点用Key对核心数据进行DES加密,然后以密码形式在公共通信网(如电话网)中传输到通信网络的终点,数据到达目的地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样,便保证了核心数据(如PIN、MAC等)在公共通信网中传输的安全性和可靠性。 通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融交易网络的流行做法。 下面是DES原理及实现步骤,以及VC++关于DES加密解密的详细源程序
图片加密,解密程序
图片加密,解密程序,有源码.使用:输入图片所在文件夹,格式d:\\xxx\\;需要自己安装jdk才可运行,jdk1.7,1.8
基于 STM32 的程序加密
基于 STM32 的程序加密方法,keil 编译
DSP程序加密解密方法
针对DSP应用程序的加密,解密,本文档给出了2种加密方法,1种解密方法,并详细的给出了加密解密的方法和步骤,供大家学习使用。
微机原理加密解密程序设计
本设计主要采用对ASCII码值进行加1、加2的操作,来实现输入数据的加密工作。输入的第n 个数据,若n为奇数则加1,n为偶数就将该数据的ASCII码值加2。解密算法类似,即n为奇数则ASCII码值减1为偶数减2。


控件
