Windows環境で AES と SHA256 を CryptAPI で使用したくなり、調べ始めました。
.NET で簡単にできることも、CryptAPI単独で実現しようとすると手続きが面倒です。でも時々Win32で実現する必要がある場合もあるので、まぁ情報として有意義ではないかと。
まずは CryptEnumProviderTypes() でCSPタイプ一覧を取得する方法です。OSによって実装されているCSPタイプに差異があるので重要な情報です。
コンパイラ : | VC++2008 sp1, | 32bitコンパイル、/MT(d) |
OS : | Windows7 64bit Proffesional, | |
[プログラムソース]
#include <windows.h> #include <WinCrypt.h> #include <tchar.h> #include <stdio.h> #include <stdlib.h> #define BUF_SIZE 100 int _tmain(int argc, _TCHAR* argv[]) { DWORD dwIndex; DWORD dwProvType; DWORD cbTypeName; TCHAR pszTypeName[BUF_SIZE]; _tprintf(_T("Enamerate CSP(Cryptographic Service Provider) types.\n")); _tprintf(_T("===================\n")); dwIndex = 0; cbTypeName = BUF_SIZE; while( CryptEnumProviderTypes ( dwIndex, // インデックス番号 NULL, // 予約 0, // 予約 &dwProvType, // CSPタイプ pszTypeName, // CSPタイプ名 &cbTypeName)) // サイズ { _tprintf(_T("%2d - %s\n"), dwProvType, pszTypeName); dwIndex++; cbTypeName = BUF_SIZE; } _tprintf(_T("===================\n")); _tprintf(_T("HIT [enter] KEY !! ")); getchar(); return EXIT_SUCCESS; }
Enamerate CSP(Cryptographic Service Provider) types. =================== 1 - RSA Full (Signature and Key Exchange) 3 - DSS Signature 12 - RSA SChannel 13 - DSS Signature with Diffie-Hellman Key Exchange 18 - Diffie-Hellman SChannel 24 - RSA Full and AES =================== HIT [enter] KEY !!
OS: Windows7 64bit Proffesional
作成: VC++2008 sp1、32bitコンパイル、/MT(d)
さて、問題は上記それぞれのCSPタイプで使用できる詳細アルゴリズム。これについては以下の通り。
CSPのタイプ | 値 | 鍵交換 | 電子署名 | 暗号化 | ハッシュ計算 |
---|---|---|---|---|---|
PROV_RSA_FULL | 1 | RSA | RSA | RC2 RC4 |
MD5 SHA-1 |
PROV_RSA_AES | 24 | RSA | RSA | RC2 RC4 AES |
MD2 MD4 MD5 SHA-1 SHA256 (*1) SHA384 (*1) SHA512 (*1) |
PROV_RSA_SIG | 2 | None | RSA | None | MD5 SHA-1 |
PROV_RSA_SCHANNEL | 12 | RSA | RSA | RC4 DES Triple DES |
MD5 SHA-1 |
PROV_DSS | 3 | None | DSS | None | MD5 SHA-1 |
PROV_DSS_DH | 13 | DSS | DSS | CYLINK_MEK | MD5 SHA-1 |
PROV_DH_SCHANNEL | 18 | DSS | DSS | DES Triple DES |
MD5 SHA-1 |
PROV_FORTEZZA | 4 | KEA | DSS | Skipjack | SHA-1 |
PROV_MS_EXCHANGE | 5 | RSA | RSA | CAST | MD5 |
PROV_SSL | 6 | RSA | RSA | Varies | Varies |
(*1) Windows Vista, Windows 7 以降 でのみ使用可能
本ページの情報は、特記無い限り下記 MIT ライセンスで提供されます。
2023-04-05 | - | ページデザイン刷新 |
2012-01-28 | - | 新規作成 |