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…
murphy engranajeide
Aquí hay un montón de ejemplos que he encontrado….
- Ejemplo de programa C: Listado de certificados en una tienda
- Ejemplo de programa C: Uso de CryptAcquireContext
- Programa de ejemplo C: enumeración de proveedores de CSP y tipos de proveedores
- Ejemplo de código C para abrir tiendas de certificados
- Ejemplo de programa C: envío y recepción de un mensaje firmado y cifrado
- Ejemplo de programa C: firma de un hash y verificación de la firma del hash
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
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%\Include
y 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.
¿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