CryptHashData 関数 (wincrypt.h)

大事な この API は非推奨です。 新規および既存のソフトウェアでは 、暗号化次世代 API の 使用を開始する必要があります。Microsoft は、今後のリリースでこの API を削除する可能性があります。
 
CryptHashData 関数は、指定したハッシュ オブジェクトにデータを追加します。 この関数と CryptHashSessionKey を 複数回呼び出して、長いデータ ストリームまたは不連続データ ストリームのハッシュを計算できます。

この関数を呼び出す前に、ハッシュ オブジェクトのハンドルを作成するために CryptCreateHash を呼び出す必要があります。

構文

BOOL CryptHashData(
  [in] HCRYPTHASH hHash,
  [in] const BYTE *pbData,
  [in] DWORD      dwDataLen,
  [in] DWORD      dwFlags
);

パラメーター

[in] hHash

ハッシュ オブジェクトのハンドル。

[in] pbData

ハッシュ オブジェクトに追加するデータを含むバッファーへのポインター。

[in] dwDataLen

追加するデータのバイト数。 CRYPT_USERDATA フラグが設定されている場合は、0 にする必要があります。

[in] dwFlags

次のフラグ値が定義されています。

意味
CRYPT_OWF_REPL_LM_HASH
0x00000001
このフラグは使用されません。
CRYPT_USERDATA
1 (0x1)
すべての Microsoft 暗号化プロバイダーは、このパラメーターを無視します。 このパラメーターを無視しない CSP の場合、このフラグが設定されている場合、CSP はユーザーにデータを直接入力するように求めます。 このデータはハッシュに追加されます。 アプリケーションは、データへのアクセスを許可されていません。 このフラグは、ユーザーがシステムに PIN を入力できるようにするために使用できます。

戻り値

関数が成功した場合、戻り値は TRUE になります

関数が失敗した場合、戻り値は FALSE になります。 拡張エラー情報については、 GetLastError を呼び出します。

"NTE" の前に表示されるエラー コードは、使用している特定の CSP によって生成されます。 考えられるエラー コードの一部を次に示します。

リターン コード 説明
ERROR_INVALID_HANDLE
パラメーターの 1 つは、無効なハンドルを指定します。
ERROR_INVALID_PARAMETER
パラメーターの 1 つに無効な値が含まれています。 これは、ほとんどの場合、無効なポインターです。
NTE_BAD_ALGID
hHash ハンドルは、この CSP でサポートされていないアルゴリズムを指定します。
NTE_BAD_FLAGS
dwFlags パラメーターに無効な値が含まれています。
NTE_BAD_HASH
hHash パラメーターで指定されたハッシュ オブジェクトが無効です。
NTE_BAD_HASH_STATE
既に "完了" とマークされているハッシュ オブジェクトにデータを追加しようとしました。
NTE_BAD_KEY
キー付きハッシュ アルゴリズムが使用されていますが、セッション キーは無効になっています。 このエラーは、ハッシュ操作が完了する前にセッション キーが破棄された場合に生成されます。
NTE_BAD_LEN
CSP は、CRYPT_USERDATA フラグを無視せず、フラグが設定され、 dwDataLen パラメーターに 0 以外の値が設定されます。
NTE_BAD_UID
ハッシュ オブジェクトの作成時に指定された CSP コンテキストが見つかりません。
NTE_FAIL
関数が予期しない方法で失敗しました。
NTE_NO_MEMORY
操作中に CSP のメモリが不足しました。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー wincrypt.h
Library Advapi32.lib
[DLL] Advapi32.dll

こちらもご覧ください

CryptCreateHash

CryptHashSessionKey

CryptSignHash

ハッシュ関数とデジタル署名関数