Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En el procedimiento siguiente se describen los pasos que se deben seguir para cifrar un mensaje con las funciones de criptografía base. Para cifrar mensajes mediante estándares PKCS #7, consulte Funciones de mensajes de bajo nivel y Funciones de mensaje simplificadas.
Para cifrar un mensaje
Genere una clave de sesión mediante la función CryptGenKey .
La realización de esta llamada genera una clave aleatoria y devuelve un identificador para que la clave se pueda usar para cifrar y descifrar datos. El algoritmo de cifrado que se va a usar también se especifica en este momento. Dado que CryptoAPI no permite que las aplicaciones usen algoritmos de clave pública para cifrar datos masivos, especifique un algoritmo simétrico como RC2 o RC4 con la llamada a CryptGenKey .
Como alternativa, use la función CryptDeriveKey para transformar una contraseña en una clave adecuada para el cifrado.
Si una aplicación necesita cifrar el mensaje para que cualquier persona con una contraseña especificada pueda descifrar los datos, use CryptDeriveKey para transformar la contraseña en una clave adecuada para el cifrado.
Nota:
En este caso, se llama a esta función en lugar de a la función CryptGenKey y no se necesitan las llamadas posteriores a CryptExportKey .
Si es necesario, establezca propiedades criptográficas adicionales de la clave mediante la función CryptSetKeyParam .
Una vez generada la clave, se pueden establecer propiedades criptográficas adicionales de la clave con la función CryptSetKeyParam. Esta función permite cifrar diferentes secciones del archivo con diferentes sales de clave y proporciona una manera de cambiar el modo de cifrado o el vector de inicialización de la clave. Estos parámetros se pueden usar para que el cifrado se ajuste a un estándar de cifrado de datos determinado.
Cifre los datos del archivo con la función CryptEncrypt .
La función CryptEncrypt toma la clave de sesión que se generó en el paso anterior y cifra un búfer de datos.
Nota
A medida que se cifran los datos, los datos se pueden expandir ligeramente mediante el algoritmo de cifrado. La aplicación es responsable de recordar la longitud de los datos cifrados para que se pueda especificar la longitud adecuada más adelante para la función CryptDecrypt .
Opcionalmente, use la función CryptExportKey para permitir que el usuario actual descifre los datos en el futuro.
Para permitir que el usuario actual descifre los datos en el futuro, la función CryptExportKey se usa para guardar la clave de descifrado en un formulario cifrado (un BLOB de clave) que solo se puede descifrar con la clave privada del usuario. Esta función requiere la clave pública de intercambio de claves del usuario para este fin, que se puede obtener mediante la función CryptGetUserKey . La función CryptExportKey devolverá un BLOB de clave que debe almacenar la aplicación para su uso en el descifrado del archivo.
Nota
Si la aplicación tiene certificados (o claves públicas) para otros usuarios, puede permitir que otros usuarios descifren el archivo mediante la realización de llamadas CryptExportKey para cada usuario que debe recibir acceso. La aplicación debe almacenar los blobs de clave devueltas, como en el paso 5.
Crear un mensaje cifrado
Las funciones simplificadas de mensajes facilitan el cifrado y el descifrado de los datos. En la ilustración siguiente se muestran las tareas individuales que se deben realizar para cifrar un mensaje. Los pasos se describen en la lista siguiente.
Para cifrar un mensaje
- Obtiene un puntero al mensaje de texto no cifrado.
- Genere una clave simétrica (sesión).
- Con la clave simétrica y el algoritmo de cifrado especificados, cifre los datos del mensaje.
- Abra un almacén de certificados.
- Obtenga el certificado del destinatario.
- Obtenga la clave pública del certificado del destinatario.
- Con la clave pública del destinatario, cifre la clave simétrica.
- Obtenga el identificador del destinatario del certificado del destinatario.
- Incluya lo siguiente en el mensaje sobre digital: el algoritmo de cifrado de datos, los datos cifrados, la clave simétrica cifrada y el identificador del destinatario.