Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Questo articolo descrive la crittografia usando cryptoAPI legacy. Per le nuove applicazioni, usare invece l'API Cryptography: Next Generation (CNG). Per un esempio di crittografia moderna che usa CNG con AES, vedere Crittografia dei dati con CNG.
La procedura seguente descrive i passaggi da eseguire per crittografare un messaggio con le funzioni di crittografia di base. Per crittografare i messaggi usando gli standard PKCS #7, consultare le funzioni di messaggio di basso livello e le funzioni di messaggio semplificate .
Per crittografare un messaggio
Generare una chiave di sessione usando la funzione CryptGenKey.
L'esecuzione di questa chiamata genera una chiave casuale e restituisce un handle in modo che la chiave possa essere usata per crittografare e decrittografare i dati. A questo punto viene specificato anche l'algoritmo di crittografia da usare. Poiché CryptoAPI non consente alle applicazioni di usare algoritmi di chiave pubblica per crittografare i dati in blocco, specificare un algoritmo simmetrico come RC2 o RC4 con la chiamata CryptGenKey.
In alternativa, usare la funzione CryptDeriveKey per trasformare una password in una chiave adatta per la crittografia.
Se un'applicazione deve crittografare il messaggio in modo che chiunque abbia una password specificata possa decrittografare i dati, usare CryptDeriveKey per trasformare la password in una chiave adatta alla crittografia.
Nota
In questo caso, questa funzione viene chiamata anziché la funzione CryptGenKey e le successive chiamate CryptExportKey non sono necessarie.
Se necessario, impostare proprietà di crittografia aggiuntive della chiave usando la funzione CryptSetKeyParam
Dopo aver generato la chiave, è possibile impostare proprietà crittografiche aggiuntive della chiave con la funzione CryptSetKeyParam. Questa funzione consente di crittografare diverse sezioni del file con salt di chiave diversi e fornisce un modo per modificare la modalità di crittografia o il vettore di inizializzazione della chiave. Questi parametri possono essere usati per rendere la crittografia conforme a un particolare standard di crittografia dei dati.
Crittografare i dati nel file con la funzioneCryptEncrypt.
La funzioneCryptEncryptaccetta la chiave di sessione generata nel passaggio precedente e crittografa un buffer di dati.
Nota
Man mano che i dati vengono crittografati, i dati potrebbero essere leggermente espansi dall'algoritmo di crittografia. L'applicazione è responsabile della memorizzazione della lunghezza dei dati crittografati in modo che la lunghezza corretta possa essere specificata successivamente per la funzione CryptDecrypt.
Facoltativamente, usare la funzioneCryptExportKey per consentire all'utente corrente di decrittografare i dati in futuro.
Per consentire all'utente corrente di decrittografare i dati in futuro, la funzioneCryptExportKeyviene usata per salvare la chiave di decrittografia in un formato crittografato (un BLOB di chiave) che può essere decrittografato solo con la chiave privata dell'utente. Questa funzione richiede la chiave pubblica di scambio delle chiavi dell'utente per questo scopo, che può essere ottenuta usando la funzione CryptGetUserKey. La funzione CryptExportKey restituirà un BLOB di chiave che deve essere archiviato dall'applicazione da usare per decrittografare il file
Nota
Se l'applicazione dispone di certificati (o chiavi pubbliche) per altri utenti, può consentire ad altri utenti di decrittografare il file eseguendo CryptExportKey chiamate per ogni utente che deve ricevere l'accesso. I BLOB di chiave restituiti devono essere archiviati dall'applicazione, come nel passaggio 5.
Creazione di un messaggio crittografato
Le funzioni di messaggio semplificate semplificano la crittografia e la decrittografia dei dati. La figura seguente illustra le singole attività che devono essere eseguite per crittografare un messaggio. I passaggi sono descritti nell'elenco seguente.
Per crittografare un messaggio
- Ottenere un puntatore al messaggio di testo non crittografato.
- Generare una chiave simmetrica di sessione.
- Usando la chiave simmetrica e l'algoritmo di crittografia specificato, crittografare i dati del messaggio.
- Aprire un archivio certificati.
- Ottenere il certificato del destinatario.
- Ottenere la chiave pubblica dal certificato del destinatario.
- Usando la chiave pubblica del destinatario, crittografare la chiave simmetrica.
- Ottenere l'identificatore del destinatario dal certificato del destinatario.
- Includere quanto segue nel messaggio in formato digitale: algoritmo di crittografia dei dati, dati crittografati, chiave simmetrica crittografata e identificatore del destinatario.