O público declara o liberal “advapi32.dll” aliás “CryptAcquireContextA” de CryptAcquireContext da função (o _
phProv como por muito tempo, pszContainer de ByVal como por muito tempo, pszProvider de ByVal como a corda, _
dwProvType de ByVal como dwFlags por muito tempo, de ByVal como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptCreateHash da função (hProv de ByVal como por muito tempo, o _
ByVal álgido como o hKey por muito tempo, de ByVal como dwFlags por muito tempo, de ByVal como por muito tempo, phHash como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptHashData da função (hHash de ByVal como por muito tempo, o _
O pbData como a corda, ByVal de ByVal dwDataLen como dwFlags por muito tempo, de ByVal como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptDeriveKey da função (o _
hProv de ByVal como por muito tempo, ByVal álgido como por muito tempo, hBaseData de ByVal como por muito tempo, dwFlags de ByVal como por muito tempo, _
phKey como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptDestroyHash da função (hHash de ByVal como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptDestroyKey da função (hKey de ByVal como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptEncrypt da função (hKey de ByVal como por muito tempo, o _
hHash de ByVal como por muito tempo, final de ByVal como por muito tempo, dwFlags de ByVal como por muito tempo, pbData de ByVal como a corda, _
pdwDataLen como por muito tempo, ByVal dwBufLen como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptDecrypt da função (hKey de ByVal como por muito tempo, o _
hHash de ByVal como por muito tempo, final de ByVal como por muito tempo, dwFlags de ByVal como por muito tempo, pbData de ByVal como a corda, _
pdwDataLen como por muito tempo) como por muito tempo
O público declara o liberal “advapi32.dll” de CryptReleaseContext da função (hProv de ByVal como por muito tempo, o _
dwFlags de ByVal como por muito tempo) como por muito tempo
O público declara o liberal “kernel32” de GetLastError da função () como por muito tempo
'constantes para funções do API da criptografia
Const confidencial CRYPT_NEWKEYSET = &H8
Const confidencial MS_DEF_PROV = “Microsoft Base Cryptographic Provider v1.0”
Const confidencial PROV_RSA_FULL = 1
Const confidencial ALG_CLASS_DATA_ENCRYPT = 24576
Const confidencial ALG_CLASS_HASH = 32768
Const confidencial ALG_TYPE_ANY = 0
Const confidencial ALG_TYPE_BLOCK = 1536
Const confidencial ALG_TYPE_STREAM = 2048
Const confidencial ALG_SID_RC2 = 2
Const confidencial ALG_SID_RC4 = 1
Const confidencial ALG_SID_SHA1 = 4
Const confidencial ALG_SID_MD5 = 3
Const confidencial CALG_SHA1 = ((ALG_CLASS_HASH ou ALG_TYPE_ANY) ou ALG_SID_SHA1)
Const confidencial CALG_MD5 = ((ALG_CLASS_HASH ou ALG_TYPE_ANY) ou ALG_SID_MD5)
Const confidencial CALG_RC2 = ((ALG_CLASS_DATA_ENCRYPT ou ALG_TYPE_BLOCK) ou ALG_SID_RC2)
Const confidencial CALG_RC4 = ((ALG_CLASS_DATA_ENCRYPT ou ALG_TYPE_STREAM) ou ALG_SID_RC4)
Const confidencial ENCRYPT_ALGORITHM = CALG_RC2
Const confidencial ENCRYPT_BLOCK_SIZE = 1
Const confidencial CRYPT_EXPORTABLE = 1
'usou-se para especific para não usar nenhum valor de sal ao derivar a chave
Const confidencial CRYPT_NO_SALT como por muito tempo = &H10
Função confidencial CryptoDecrypt (sInputBuffer como a corda, sPassword como o sErrore da corda, do ByRef como a corda) como a corda
lHExchgKey não ofuscante como por muito tempo
lHCryptprov não ofuscante como por muito tempo
lHHash não ofuscante como por muito tempo
lHkey não ofuscante como por muito tempo
lResult não ofuscante como por muito tempo
sProvider não ofuscante como a corda
sCryptBuffer não ofuscante como a corda
Não ofuscante lCryptBufLen como por muito tempo
Escurecer o lCryptPoint como por muito tempo
Escurecer o lPasswordPoint como por muito tempo
Escurecer o lPasswordCount como por muito tempo
No erro DecryptError empreendedores
'começ o punho ao defeito CSP.
sProvider = vbNullChar
sProvider = MS_DEF_PROV & vbNullChar
Se não CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, 0)) Então
'Se não há nenhum recipiente da chave de defeito a seguir cria um using o campo das bandeiras
Se GetLastError = 0 então
Se não CBool (CryptAcquireContext (lHCryptprov, 0&, sProvider, PROV_RSA_FULL, CRYPT_NEWKEYSET)) Então
Finished empreendedores
Terminar se
Terminar se
Terminar se
'Criar um objeto da mistura
Se não CBool (CryptCreateHash (lHCryptprov, CALG_SHA1, 0, 0, lHHash)) Então
Finished empreendedores
Terminar se
'Picar no texto da senha
Se não CBool (CryptHashData (lHHash, sPassword, Len (sPassword), 0)) Então
Finished empreendedores
Terminar se
'Criar uma chave de sessão do objeto da mistura
Se não CBool (CryptDeriveKey (lHCryptprov, ENCRYPT_ALGORITHM, lHHash, ByVal CRYPT_NO_SALT, lHkey)) Então
Finished empreendedores
Terminar se
'Destruir o objeto da mistura.
CryptDestroyHash (lHHash)
lHHash = 0
'Preparar o sCryptBuffer para CryptDecrypt
lCryptBufLen = Len (o sInputBuffer)
sCryptBuffer = corda (lCryptBufLen, vbNullChar)
sCryptBuffer = sInputBuffer de LSet
'Dados do Decrypt
Se não CBool (CryptDecrypt (o lHkey, 0, 1, 0, o sCryptBuffer, lCryptBufLen)) Então
Finished empreendedores
Terminar se
'Setup o amortecedor de saída com apenas dados descifrados
CryptoDecrypt = meados de (o sCryptBuffer, 1, lCryptBufLen)
Finished:
'Destruir a chave de sessão
Se (lHkey) então lResult = CryptDestroyKey (lHkey)
'Destruir o punho chave da chave da troca
Se lHExchgKey então CryptDestroyKey (lHExchgKey)
'Destruir o objeto da mistura
Se lHHash então CryptDestroyHash (lHHash)
'Liberar o punho do fornecedor do contexto
Se lResult do lHCryptprov então = CryptReleaseContext (lHCryptprov, 0)
Retirar a função
DecryptError:
msgbox (GetLastError)
Class= > " desobstruído " da extremidade Function