1 för >
Allmänhet förklarar fungerar pseudonymen ”CryptAcquireContextA” för den CryptAcquireContext liben ”advapi32.dll” (_, phProv som Long, ByVal pszContainer som Long, ByVal pszProvider som stränger, _, ByVal dwProvType som Long, ByVal dwFlags som Long) som Long Allmänhet förklarar fungerar den CryptCreateHash liben ”advapi32.dll” (ByVal hProv som Long, _, ByVal som är algid som Long, ByVal hKey som Long, ByVal dwFlags som Long, phHash som Long) som Long Allmänhet förklarar fungerar den CryptHashData liben ”advapi32.dll” (ByVal hHash som Long, _, Den ByVal pbDataen som stränger, ByVal dwDataLen som Long, ByVal dwFlags som Long) som Long Allmänhet förklarar fungerar den CryptDeriveKey liben ”advapi32.dll” (_, ByVal hProv som Long, ByVal som är algid som Long, ByVal hBaseData som Long, ByVal dwFlags som Long, _, phKey som Long) som Long Allmänhet förklarar fungerar den CryptDestroyHash liben ”advapi32.dll” (ByVal hHash som Long) som Long Allmänhet förklarar fungerar den CryptDestroyKey liben ”advapi32.dll” (den ByVal hKeyen som Long) som Long Allmänhet förklarar fungerar den CryptEncrypt liben ”advapi32.dll” (den ByVal hKeyen som Long, _, ByVal hHash som Long, ByVal final som Long, ByVal dwFlags som Long, ByVal pbData som stränger, _, pdwDataLen, som Long, ByVal dwBufLen som Long) som Long Allmänhet förklarar fungerar den CryptDecrypt liben ”advapi32.dll” (den ByVal hKeyen som Long, _, ByVal hHash som Long, ByVal final som Long, ByVal dwFlags som Long, ByVal pbData som stränger, _, pdwDataLen som Long) som Long Allmänhet förklarar fungerar den CryptReleaseContext liben ”advapi32.dll” (ByVal hProv som Long, _, ByVal dwFlags som Long) som Long Allmänhet förklarar fungerar den GetLastError liben ”kernel32” () som Long 'konstanter för kryptografi API fungerar Privata Const CRYPT_NEWKEYSET = &H8 Privata Const MS_DEF_PROV = ”Microsoft Base Cryptographic Provider v1.0”, Privata Const PROV_RSA_FULL = 1 Privata Const ALG_CLASS_DATA_ENCRYPT = 24576 Privata Const ALG_CLASS_HASH = 32768 Privata Const ALG_TYPE_ANY = 0 Privata Const ALG_TYPE_BLOCK = 1536 Privata Const ALG_TYPE_STREAM = 2048 Privata Const ALG_SID_RC2 = 2 Privata Const ALG_SID_RC4 = 1 Privata Const ALG_SID_SHA1 = 4 Privata Const ALG_SID_MD5 = 3 Privata Const CALG_SHA1 = ((ALG_CLASS_HASH eller ALG_TYPE_ANY) eller ALG_SID_SHA1) Privata Const CALG_MD5 = ((ALG_CLASS_HASH eller ALG_TYPE_ANY) eller ALG_SID_MD5) Privata Const CALG_RC2 = ((ALG_CLASS_DATA_ENCRYPT eller ALG_TYPE_BLOCK) eller ALG_SID_RC2) Privata Const CALG_RC4 = ((ALG_CLASS_DATA_ENCRYPT eller ALG_TYPE_STREAM) eller ALG_SID_RC4) Privata Const ENCRYPT_ALGORITHM = CALG_RC2 Privata Const ENCRYPT_BLOCK_SIZE = 1 Privata Const CRYPT_EXPORTABLE = 1 'van vid specificera för att inte använda några som är salt, värderar stunder som härleder det nyckel- Privata Const CRYPT_NO_SALT som Long = &H10 Privat fungera CryptoDecrypt (sInputBuffer som stränger, sPassworden som stränger, ByRef sErrore som stränger) som stränger Dunkel lHExchgKey som Long Dunkel lHCryptprov som Long Dunkel lHHash som Long Dunkel lHkey som Long Dunkel lResult som Long Dunkel sProvider som stränger Dunkel sCryptBuffer som stränger Dunkelt lCryptBufLen som Long Dunkel lCryptPoint som Long Dunkel lPasswordPoint som Long Dunkel lPasswordCount som Long På felet GoTo DecryptError 'få handtaget till standarden CSP. sProvider = vbNullChar sProvider = MS_DEF_PROV & vbNullChar Om inte CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, 0)) Därefter Skapa en som använder, sjunker sätter in, 'om det inte finns någon nyckel- behållare för standard då Om GetLastError = 0 därefter Om inte CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, CRYPT_NEWKEYSET)) Därefter GoTo färdigt Avsluta om Avsluta om Avsluta om 'Skapa en pölsa anmärker Om inte CBool (CryptCreateHash (lHCryptprov, CALG_SHA1, 0, 0, lHHash)) Därefter GoTo färdigt Avsluta om 'Pölsa i lösenordtexten Om inte CBool (CryptHashData (lHHash, sPassworden, Len (sPassword), 0)) Därefter GoTo färdigt Avsluta om 'Skapa en period som är nyckel- från pölsan, anmärker Om inte CBool (CryptDeriveKey (lHCryptprov, ENCRYPT_ALGORITHM, lHHash, ByVal CRYPT_NO_SALT, lHkeyen)) Därefter GoTo färdigt Avsluta om 'Förstör pölsan anmärker. CryptDestroyHash (lHHash) lHHash = 0 'Förbered sCryptBuffer för CryptDecrypt lCryptBufLen = Len (sInputBuffer) sCryptBuffer = stränger (lCryptBufLen, vbNullChar), LSet sCryptBuffer = sInputBuffer 'Decryptdata Om inte CBool (CryptDecrypt (lHkey, 0, 1, 0, sCryptBuffer, lCryptBufLen)), Därefter GoTo färdigt Avsluta om 'Ställa in tillverkat fungera som buffert med precis decrypted data CryptoDecrypt = mitt- (sCryptBuffer, 1, lCryptBufLen), Färdigt: 'Förstör den nyckel- perioden Om (lHkey) därefter lResult = CryptDestroyKey (lHkeyen) 'Förstör det nyckel- handtaget för det nyckel- utbytet Om lHExchgKey därefter CryptDestroyKey (lHExchgKeyen) 'Förstör pölsa anmärker Om lHHash därefter CryptDestroyHash (lHHash) 'Frigör sammanhangfamiljeförsörjarehandtaget Om lResult för lHCryptprov därefter = CryptReleaseContext (lHCryptprov, 0) Gå ut fungerar DecryptError: msgbox (GetLastError) Avsluta Function<-/pre>