CryptAPIでハッシュを計算させようとすると、巷に多いサンプルコードではCryptAcquireContextでPROV_RSA_FULLを渡していますが、これだとSHA-2に対応していません。
MSDNのブログにも書かれていますが、PROV_RSA_AESを渡せばCALG_SHA_256等が通るようになります。XP SP3以降に限定されますが。
エラーチェック無しでこんな感じです。
MSDNのブログにも書かれていますが、PROV_RSA_AESを渡せばCALG_SHA_256等が通るようになります。XP SP3以降に限定されますが。
エラーチェック無しでこんな感じです。
CryptAcquireContext( &hProv, NULL, NULL, PROV_RSA_AES, 0 );
CryptCreateHash( hProv, CALG_SHA_256, 0, 0, &hHash );
CryptHashData( hHash, src, 1024, 0 );
len = 32;
CryptGetHashParam( hHash, HP_HASHVAL, hash, &len, 0 );
CryptDestroyHash( hHash );
CryptReleaseContext( hProv, 0 );
コメントする