목차

Cryptography API

In Microsoft cryptographic technologies

지원하는게 많네, 하지만 관심은 CryptoAPI에만 있으니 나머지는 패스

CryptoAPI

윈도우 어플리케이션에서 인터넷과 같은 보안 사각지대에서 문서나 데이터를 안전하게 주고 받을 수 있도록 하는 목적으로 사용된다. C나 C++을 사용할 수 있어야하고 암호화에 대한 지식이 있으면 편하겠지.

CAPICOM

32bit 컴포넌트로, VBScript나 C++ 언어로 애플리케이션 개발에 사용되는 컴포넌트.

OS가 지원하는(명시한) 런타임 환경(스펙)하에서 사용되는 것이 가능합니다.

(CAPICOM is available for use in the operating systems specified in Run-Time Requirements.)

예제 모음

Cryptography API 를 사용한 난수 생성

이런 것도 되나.. 흠

웹사이트 설명 :

#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
#pragma comment(lib, "crypt32.lib")
#include <Wincrypt.h>
#define MY_ENCODING_TYPE  (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
 
int main()
{
    //--------------------------------------------------------------------
    // 변수를 선언하고 초기화 합니다.
    HCRYPTPROV   hCryptProv;
    BYTE         pbData;
 
    //-------------------------------------------------------------------
    // 암호 제공자의 컨텍스트 핸들을 얻습니다.
 
    if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, 0)) 
    {    
        printf("CryptAcquireContext succeeded. \n");
    }
    else
    {
        printf("Error during CryptAcquireContext!\n");
    }
 
    //--------------------------------------------------------------------
    // BYTE 범위내에서 난수를 생성합니다.
 
    if(CryptGenRandom(hCryptProv, 1, &pbData)) 
    {
        printf("Random number is: %d.\n", ((int)pbData) * 100 / 255);
    }
    else
    {
        printf("Error during CryptGenRandom.\n");
        exit(1);
    }
 
    //-------------------------------------------------------------------
    // 컨텍스트 핸들을 해제합니다.
    if(hCryptProv)
    {
        if (!CryptReleaseContext(hCryptProv, 0))
        {
            printf("Failed CryptReleaseContext\n");
        }
    }
 
    return 0;
}