winapi:암호화
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
winapi:암호화 [2012/04/20 19:43] – 바깥 편집기 127.0.0.1 | winapi:암호화 [2024/04/23 22:43] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== Cryptography API ====== | ||
+ | In Microsoft cryptographic technologies | ||
+ | * CryptoAPI | ||
+ | * Cryptographic Service Providers (CSP) | ||
+ | * CryptoAPI Tools | ||
+ | * CAPICOM | ||
+ | * WinTrust | ||
+ | * issuing and managing certificates | ||
+ | * developing customizable public key infrastructures | ||
+ | * Certificate and smart card enrollment | ||
+ | * certificate management | ||
+ | * custom module development | ||
+ | |||
+ | 지원하는게 많네, 하지만 관심은 CryptoAPI에만 있으니 나머지는 패스 | ||
+ | ===== CryptoAPI ===== | ||
+ | |||
+ | |||
+ | 윈도우 어플리케이션에서 인터넷과 같은 보안 사각지대에서 문서나 데이터를 안전하게 주고 받을 수 있도록 하는 목적으로 사용된다. | ||
+ | C나 %%C++%%을 사용할 수 있어야하고 암호화에 대한 지식이 있으면 편하겠지. | ||
+ | |||
+ | ===== CAPICOM ===== | ||
+ | |||
+ | 32bit 컴포넌트로, | ||
+ | |||
+ | OS가 지원하는(명시한) 런타임 환경(스펙)하에서 사용되는 것이 가능합니다. | ||
+ | |||
+ | (CAPICOM is available for use in the operating systems specified in Run-Time Requirements.) | ||
+ | |||
+ | ===== Quick Link ===== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ====== 예제 모음 ====== | ||
+ | |||
+ | ===== Cryptography API 를 사용한 난수 생성 ===== | ||
+ | |||
+ | 이런 것도 되나.. 흠 | ||
+ | |||
+ | 웹사이트 설명 : | ||
+ | * 윈도우 환경에서 난수를 생성해야 하는 경우라면 CRT 함수 대신 Cryptography API의 하나인 CryptGenRandom() (http:// | ||
+ | * 이 함수를 이용하면 주어진 버퍼의 크기만큼 난수를 생성할 수 있는 장점이 있습니다. | ||
+ | |||
+ | <code c++> | ||
+ | #include " | ||
+ | #include < | ||
+ | #include < | ||
+ | using namespace std; | ||
+ | #pragma comment(lib, | ||
+ | #include < | ||
+ | #define MY_ENCODING_TYPE | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | // | ||
+ | // 변수를 선언하고 초기화 합니다. | ||
+ | HCRYPTPROV | ||
+ | BYTE | ||
+ | |||
+ | // | ||
+ | // 암호 제공자의 컨텍스트 핸들을 얻습니다. | ||
+ | |||
+ | if(CryptAcquireContext(& | ||
+ | { | ||
+ | printf(" | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | printf(" | ||
+ | } | ||
+ | |||
+ | // | ||
+ | // BYTE 범위내에서 난수를 생성합니다. | ||
+ | |||
+ | if(CryptGenRandom(hCryptProv, | ||
+ | { | ||
+ | printf(" | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | printf(" | ||
+ | exit(1); | ||
+ | } | ||
+ | |||
+ | // | ||
+ | // 컨텍스트 핸들을 해제합니다. | ||
+ | if(hCryptProv) | ||
+ | { | ||
+ | if (!CryptReleaseContext(hCryptProv, | ||
+ | { | ||
+ | printf(" | ||
+ | } | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | </ |