Chiffrement de données
La procédure suivante décrit les étapes à suivre pour chiffrer un message avec les fonctions de chiffrement de base. Pour chiffrer les messages à l’aide des # normes PKCS 7, consultez fonctions de message de bas niveau et fonctions de message simplifiées.
Pour chiffrer un message
Générez une clé de session à l’aide de la fonction CryptGenKey .
Cet appel génère une clé aléatoire et retourne un descripteur afin que la clé puisse être utilisée pour chiffrer et déchiffrer les données. L’algorithme de chiffrement à utiliser est également spécifié à ce stade. Comme CryptoAPI ne permet pas aux applications d’utiliser des algorithmes de clé publique pour chiffrer les données en bloc, spécifiez un algorithme symétrique tel que RC2 ou RC4 avec l’appel CryptGenKey .
Vous pouvez également utiliser la fonction CryptDeriveKey pour transformer un mot de passe en une clé adaptée au chiffrement.
Si une application doit chiffrer le message afin que toute personne disposant d’un mot de passe spécifié puisse déchiffrer les données, utilisez CryptDeriveKey pour transformer le mot de passe en une clé adaptée au chiffrement.
Notes
Dans ce cas, cette fonction est appelée à la place de la fonction CryptGenKey et les appels CryptExportKey suivants ne sont pas nécessaires.
Si nécessaire, définissez des propriétés de chiffrement supplémentaires de la clé à l’aide de la fonction CryptSetKeyParam
Une fois la clé générée, les propriétés de chiffrement supplémentaires de la clé peuvent être définies avec la fonction CryptSetKeyParam. Cette fonction permet aux différentes sections du fichier d’être chiffrées à l’aide de différents sels de clé et fournit un moyen de modifier le mode de chiffrement ou le vecteur d’initialisation de la clé. Ces paramètres peuvent être utilisés pour rendre le chiffrement conforme à une norme de chiffrement de données particulière.
Chiffrez les données dans le fichier avec la fonction CryptEncrypt .
La fonction CryptEncrypt prend la clé de session générée à l’étape précédente et chiffre une mémoire tampon de données.
Notes
À mesure que les données sont chiffrées, les données peuvent être légèrement développées par l’algorithme de chiffrement. L’application est responsable de la mémorisation de la longueur des données chiffrées afin que la longueur appropriée puisse être spécifiée ultérieurement pour la fonction CryptDecrypt .
Si vous le souhaitez, utilisez la fonction CryptExportKey pour permettre à l’utilisateur actuel de déchiffrer les données à l’avenir.
Pour permettre à l’utilisateur actuel de déchiffrer les données à l’avenir, la fonction CryptExportKey est utilisée pour enregistrer la clé de déchiffrement sous une forme chiffrée (un objet blob de clé) qui peut uniquement être déchiffrée avec la clé privée de l’utilisateur. Cette fonction requiert la clé publique d’échange de clés de l’utilisateur à cet effet, qui peut être obtenue à l’aide de la fonction CryptGetUserKey . La fonction CryptExportKey retourne un objet blob de clé qui doit être stocké par l’application pour être utilisé dans le déchiffrement du fichier
Notes
Si l’application possède des certificats (ou des clés publiques) pour d’autres utilisateurs, elle peut permettre à d’autres utilisateurs de déchiffrer le fichier en effectuant des appels CryptExportKey pour chaque utilisateur qui doit recevoir l’accès. Les objets BLOB de clé retournés doivent être stockés par l’application, comme à l’étape 5.
Création d’un message chiffré
Les fonctions de message simplifiées facilitent le chiffrement et le déchiffrement des données. L’illustration suivante représente les tâches individuelles qui doivent être accomplies pour chiffrer un message. Les étapes sont décrites dans la liste suivante.

Pour chiffrer un message
- Obtient un pointeur vers le message de texte en clair.
- Générez une clé symétrique (session).
- À l’aide de la clé symétrique et de l’algorithme de chiffrement spécifié, chiffrez les données du message.
- Ouvrez un magasin de certificats.
- Obtient le certificat du destinataire.
- Récupération de la clé publique à partir du certificat du destinataire.
- À l’aide de la clé publique du destinataire, chiffrez la clé symétrique.
- Obtient l’identificateur du destinataire à partir du certificat du destinataire.
- Incluez ce qui suit dans le message enveloppé numériquement : l’algorithme de chiffrement des données, les données chiffrées, la clé symétrique chiffrée et l’identificateur du destinataire.