1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
|
Öffentlichkeit erklären Funktion CryptAcquireContext Bibliothek „advapi32.dll“ alias „CryptAcquireContextA“ (_
phProv als lang, ByVal pszContainer als lang, ByVal pszProvider als Schnur, _
ByVal dwProvType als lang, ByVal dwFlags als lang) als lang
Öffentlichkeit erklären Funktion CryptCreateHash Bibliothek „advapi32.dll“ (ByVal hProv als lang, _
ByVal algisch als lang, ByVal hKey als lang, ByVal dwFlags als lang, phHash als lang) als lang
Öffentlichkeit erklären Funktion CryptHashData Bibliothek „advapi32.dll“ (ByVal hHash als lang, _
ByVal pbData als Schnur, ByVal dwDataLen als lang, ByVal dwFlags als lang) als lang
Öffentlichkeit erklären Funktion CryptDeriveKey Bibliothek „advapi32.dll“ (_
ByVal hProv als lang, ByVal algisch als lang, ByVal hBaseData als lang, ByVal dwFlags als lang, _
phKey als lang) als lang
Öffentlichkeit erklären Funktion CryptDestroyHash Bibliothek „advapi32.dll“ (ByVal hHash als lang) als lang
Öffentlichkeit erklären Funktion CryptDestroyKey Bibliothek „advapi32.dll“ (ByVal hKey als lang) als lang
Öffentlichkeit erklären Funktion CryptEncrypt Bibliothek „advapi32.dll“ (ByVal hKey als lang, _
ByVal hHash als lang, ByVal Schluss als lang, ByVal dwFlags als lang, ByVal pbData als Schnur, _
pdwDataLen, wie lang, ByVal wie lang) wie lang dwBufLen
Öffentlichkeit erklären Funktion CryptDecrypt Bibliothek „advapi32.dll“ (ByVal hKey als lang, _
ByVal hHash als lang, ByVal Schluss als lang, ByVal dwFlags als lang, ByVal pbData als Schnur, _
als lang) als lang pdwDataLen
Öffentlichkeit erklären Funktion CryptReleaseContext Bibliothek „advapi32.dll“ (ByVal hProv als lang, _
ByVal dwFlags als lang) als lang
Öffentlichkeit erklären Funktion GetLastError Bibliothek „kernel32“ () als lang
'Konstanten für Funktionen der Kriptographie API
Privates Const CRYPT_NEWKEYSET = &H8
Privates Const MS_DEF_PROV = „Microsoft Base Cryptographic Provider v1.0“
Privates Const PROV_RSA_FULL = 1
Privates Const ALG_CLASS_DATA_ENCRYPT = 24576
Privates Const ALG_CLASS_HASH = 32768
Privates Const ALG_TYPE_ANY = 0
Privates Const ALG_TYPE_BLOCK = 1536
Privates Const ALG_TYPE_STREAM = 2048
Privates Const ALG_SID_RC2 = 2
Privates Const ALG_SID_RC4 = 1
Privates Const ALG_SID_SHA1 = 4
Privates Const ALG_SID_MD5 = 3
Privates Const CALG_SHA1 = ((ALG_CLASS_HASH oder ALG_TYPE_ANY) oder ALG_SID_SHA1)
Privates Const CALG_MD5 = ((ALG_CLASS_HASH oder ALG_TYPE_ANY) oder ALG_SID_MD5)
Privates Const CALG_RC2 = ((ALG_CLASS_DATA_ENCRYPT oder ALG_TYPE_BLOCK) oder ALG_SID_RC2)
Privates Const CALG_RC4 = ((ALG_CLASS_DATA_ENCRYPT oder ALG_TYPE_STREAM) oder ALG_SID_RC4)
Privates Const ENCRYPT_ALGORITHM = CALG_RC2
Privates Const ENCRYPT_BLOCK_SIZE = 1
Privates Const CRYPT_EXPORTABLE = 1
'verwendete, um zu spezifizieren, um keinen Salzwert bei der Ableitung des Schlüssels zu verwenden
Privates Const CRYPT_NO_SALT als lang = &H10
Private Funktion CryptoDecrypt (sInputBuffer als Schnur, sPassword als Schnur, ByRef sErrore als Schnur) als Schnur
Schwaches lHExchgKey als lang
Schwaches lHCryptprov als lang
Schwaches lHHash als lang
Schwaches lHkey als lang
Schwaches lResult als lang
Schwaches sProvider als Schnur
Schwaches sCryptBuffer als Schnur
Schwach als lang lCryptBufLen
lCryptPoint als lang verdunkeln
lPasswordPoint als lang verdunkeln
lPasswordCount als lang verdunkeln
Auf Störung Goto- DecryptError
'Handgriff an die Rückstellung CSP gelangen.
sProvider = vbNullChar
sProvider = MS_DEF_PROV u. vbNullChar
Wenn nicht CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, 0)) Dann
'Wenn es keinen Initialwertschlüsselbehälter dann gibt, ein using Markierungsfahnenfeld verursachen
Wenn GetLastError = 0 dann
Wenn nicht CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, CRYPT_NEWKEYSET)) Dann
Goto- fertiges
Beenden wenn
Beenden wenn
Beenden wenn
'Einen Durcheinandergegenstand verursachen
Wenn nicht CBool (CryptCreateHash (lHCryptprov, CALG_SHA1, 0, 0, lHHash)) Dann
Goto- fertiges
Beenden wenn
'Im Kennworttext hacken
Wenn nicht CBool (CryptHashData (lHHash, sPassword, Len (sPassword), 0)) Dann
Goto- fertiges
Beenden wenn
'Einen Lernabschnittschlüssel vom Durcheinandergegenstand verursachen
Wenn nicht CBool (CryptDeriveKey (lHCryptprov, ENCRYPT_ALGORITHM, lHHash, ByVal CRYPT_NO_SALT, lHkey)) Dann
Goto- fertiges
Beenden wenn
'Den Durcheinandergegenstand zerstören.
CryptDestroyHash (lHHash)
lHHash = 0
'sCryptBuffer für CryptDecrypt vorbereiten
lCryptBufLen = Len (sInputBuffer)
sCryptBuffer = Schnur (lCryptBufLen, vbNullChar)
LSet sCryptBuffer = sInputBuffer
'Decryptdaten
Wenn nicht CBool (CryptDecrypt (lHkey, 0, 1, 0, sCryptBuffer, lCryptBufLen)) Dann
Goto- fertiges
Beenden wenn
'Ausgangspuffer mit gerade entschlüsselten Daten gründen
CryptoDecrypt = mittler (sCryptBuffer, 1, lCryptBufLen)
Fertig:
'Lernabschnittschlüssel zerstören
Wenn (lHkey) dann lResult = CryptDestroyKey (lHkey)
'Schlüsselaustauschschlüsselhandgriff zerstören
Wenn lHExchgKey dann CryptDestroyKey (lHExchgKey)
'Durcheinandergegenstand zerstören
Wenn lHHash dann CryptDestroyHash (lHHash)
'Zusammenhangversorgerhandgriff freigeben
Wenn lHCryptprov dann lResult = CryptReleaseContext (lHCryptprov, 0)
Funktion herausnehmen
DecryptError:
msgbox (GetLastError)
Ende Function |