Quale algoritmo di crittografia utilizza CryptEncrypt in API Crypto?

-1

Sto scrivendo un codice per eseguire la crittografia e la decrittografia usando CryptEncrypt e CryptDecrypt funzioni , una parte dell'API Crypto di Windows. Qualcuno può dirmi che tipo di crittografia usano queste due funzioni? Sta usando AES o DES o 3DES o altri?

    
posta liveforFun 25.03.2015 - 08:03
fonte

1 risposta

0

Funzioni di crittografia e decrittografia dei dati MSDN

Scegli quale algoritmo usare.

Devi usare CryptAcquireContext ottenere un handle per il fornitore di servizi Crypto. Quindi chiama CryptGenKey per generare una crittografia oggetto chiave. Questa funzione è dove si definisce l'algoritmo che si desidera utilizzare. Devi anche chiamare CryptCreateHash a crea un handle per un oggetto hash. Quindi chiami CryptEncrypt con l'oggetto chiave e l'oggetto hash appena generato.

BOOL WINAPI CryptGenKey(
  _In_   HCRYPTPROV hProv,
  _In_   ALG_ID Algid,
  _In_   DWORD dwFlags,
  _Out_  HCRYPTKEY *phKey
);

possibili ALG_ID

La maggior parte delle implementazioni di crittografia richiede di chiamare una funzione finale per completare la crittografia. Questo prenderà in considerazione qualsiasi padding che deve essere aggiunto, e probabilmente qualche altra pulizia algoritmica. Generalmente ciò significa che l'ultimo blocco di dati crittografati non viene emesso nel buffer finché non viene chiamata la funzione finale . Ad esempio, in OpenSSL (quando si utilizzano le funzioni EVP) si ha EVP_EncryptInit , EVP_EncryptUpdate e EVP_EncryptFinal .

Implementazione di Microsoft di CryptEncrypt fornisce un argomento boolean final . Quando stai crittografando la tua ultima sezione di dati, devi impostare questo valore su TRUE . Se stai crittografando solo una dimensione a blocco singolo (o inferiore) di dati, devi impostare questo valore su TRUE . La sezione delle osservazioni di CryptEncrypt spiega che cosa eseguono quando è impostata su true.

  1. If the key is a block cipher key, the data is padded to a multiple of the block size of the cipher. If the data length equals the block size of the cipher, one additional block of padding is appended to the data. To find the block size of a cipher, use CryptGetKeyParam to get the KP_BLOCKLEN value of the key.
  2. If the cipher is operating in a chaining mode, the next CryptEncrypt operation resets the cipher's feedback register to the KP_IV value of the key.
  3. If the cipher is a stream cipher, the next CryptEncrypt resets the cipher to its initial state.

CryptDecrypt fornisce lo stesso boolean final variabile e la stessa operazione deve essere eseguita durante la decrittografia dei dati.

    
risposta data 25.03.2015 - 13:58
fonte

Leggi altre domande sui tag