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; | ||
| + | } | ||
| + | |||
| + | </ | ||