Ejemplos y sugerencias de la API criptográfica de Windows C/C++

3 minutos de lectura

Avatar de usuario de Gearoid Murphy
murphy engranajeide

Hago esta pregunta porque pasé la mayor parte del día rastreando documentos de msdn y otras fuentes opacas para obtener pautas simples y directas sobre cómo comenzar con Windows C/C++ Crypto API.

Lo que me gustaría ver es un código de ejemplo, rutas de inclusión típicas, pautas de enlace, etc., cualquier cosa realmente útil. Sé que esta es una pregunta imprecisa, pero creo que las respuestas imprecisas son mejores que ninguna.

Me pondré en marcha con mis propios escasos hallazgos…

  • ¿Te refieres a CryptoAPI clásico como en Win2k y XP, o CNG (“CryptoAPI Next Generation”) como en Vista y Win7? Los dos no son lo mismo.

    – dajames

    25 de enero de 2011 a las 17:53

  • Hmm, supongo que me refiero a CryptoAPI pero estoy compilando en un sistema Windows 7.

    – Gearoide Murphy

    25 de enero de 2011 a las 18:19

  • Sería mejor usar GNC

    –Michael Chordakis

    5 de noviembre de 2018 a las 22:08

Avatar de usuario de Gearoid Murphy
murphy engranajeide

Aquí hay un montón de ejemplos que he encontrado….

MSDN tiene estos ejemplos repartidos por todo el documentos

Este sitio web proporciona una buena descripción general de los conceptos junto con ejemplos multiplataforma

  • Puedes combinar tus dos respuestas.

    – André Carón

    26 de enero de 2011 a las 18:59

  • Wow, y no un ejemplo que simplemente encripta datos.

    –Jonathan Wood

    19 abr 2021 a las 19:09

Avatar de usuario de Gearoid Murphy
murphy engranajeide

Los documentos msdn están aquí: http://msdn.microsoft.com/en-us/library/aa380252.aspx

Este es el archivo de inclusión principal: #include <wincrypt.h>

Los bits de criptografía se incluyen como parte del SDK de Windowsque normalmente se instala en %PROGRAMFILES(x86)%\Microsoft SDKs\Windows\SDKVERSION (p.ej, C:\Program Files\Microsoft SDKs\Windows\v6.0A). Los encabezados suelen estar en %WINDOWSSDK%\Includey las bibliotecas relacionadas están en %WINDOWSSDK%\Lib.

Debe vincular a las bibliotecas de criptografía explícitamente. Suponiendo que está en Visual Studio, puede agregar la referencia haciendo clic con el botón derecho en el proyecto de C++, eligiendo propiedades y seleccionando Propiedades de configuración -> Vinculador en la vista de árbol de la izquierda. A continuación, puede especificar crypt32.lib en el campo de entrada a la derecha.

Alternativamente, (suponiendo que esté usando msvc ++) agregue

#pragma comment(lib, "crypt32.lib")

a tu fuente.

  • Revisé y amplié significativamente esta respuesta. Verifique para asegurarse de que cree que los cambios son útiles 🙂

    – Billy ONeal

    25 de enero de 2011 a las 17:54

  • ¡Ah!, gracias, nunca se me hubiera ocurrido usar la directiva #pragma.

    – Gearoide Murphy

    25 de enero de 2011 a las 18:18

  • Estaba usando #include e #include en mi proyecto VC++2017 y recibí el error “LNK2019” al llamar a sus funciones api. ¡Agregar la línea #pragma comment(lib, “crypt32.lib”) lo resolvió! Gracias: D

    – Ventana rota

    11 de septiembre de 2019 a las 17:29


  • Vaya, gracias, me pregunto por qué esto no forma parte de ninguna guía de MSDN.

    – linbianxiaocao

    7 de febrero de 2020 a las 17:13

También hay un ejemplo extenso. Cifrado usando la API criptográfica de Win32 en el Code Project.

Después de buscar durante varias horas, encontré este aquí: https://learn.microsoft.com/en-us/troubleshoot/windows/win32/get-information-authenticode-signed-executables

Es detallado y funciona.

¿Ha sido útil esta solución?