CryptHashData ハッシュオブジェクトへのデータの追加
Cの宣言:
BOOL CryptHashData(
HCRYPTHASH hHash,
BYTE *Buf,
DWORD BufLen,
DWORD Flags);
説明:
ハッシュオブジェクトに、ハッシュ値を求める元となるデータを追加する。
| hHash |
追加先のハッシュオブジェクトのハンドル。 |
| Buf |
追加するデータ。 |
| BufLen |
追加するデータのデータ長。 |
| Flags |
後述の表を参照。 |
Flagsには、以下の値を指定可能。
| CRYPT_USERDATA |
ダイアログボックスを表示するなどによりユーザに直接データを入力させる。このフラグを設定した場合、BufLenは0でなければならない。(Microsoft RSA Base Providerはこのフラグをサポートしていない) |
Cのサンプル:
デフォルト鍵コンテナにより、コード中のBufで指定されているデータに対してハッシュアルゴリズムMD5で電子署名を生成する。また生成した署名の検証を行う。
void SignData()
{
HCRYPTPROV hProv;
HCRYPTHASH hHash;
HCRYPTKEY hKey;
BOOL bResult;
BYTE Buf[] = "今日は良い天気です";
BYTE Signature[100];
DWORD SignLen;
SignLen = 100;
/* デフォルト鍵コンテナの取得 */
CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0);
/* ハッシュ値の生成 */
CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash);
CryptHashData(hHash, Buf, lstrlen(Buf)+1, 0);
/* 署名生成 */
CryptSignHash(hHash, AT_SIGNATURE, NULL, 0, Signature, &SignLen);
/* 署名検証 */
CryptGetUserKey(hProv, AT_SIGNATURE, &hKey);
bResult = CryptVerifySignature(hHash, Signature, SignLen, hKey, NULL, 0);
if(bResult) printf("検証成功\n");
else printf("検証失敗\n");
/* 後処理 */
CryptDestroyKey(hKey);
CryptDestroyHash(hHash);
CryptReleaseContext(hProv, 0);
}
(original text:1998/12/28 更新)
本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。