openssl: http://slproweb.com/products/Win32OpenSSL.html
旧版代码
HMAC_CTX hctx; HMAC_CTX_init(&hctx); HMAC_Init_ex(&hctx, mac_key, sizeof(mac_key), EVP_sha1(), NULL); HMAC_Update(&hctx, pTemp + offset, DEFAULT_PAGESIZE - reserve - offset + IV_SIZE); HMAC_Update(&hctx, (const unsigned char)& nPage, sizeof(nPage)); HMAC_Final(&hctx, hash_mac, &hash_len); HMAC_CTX_cleanup(&hctx);
新版代码
HMAC_CTX *hctx = HMAC_CTX_new(); HMAC_CTX_reset(hctx); HMAC_Init_ex(hctx, mac_key, sizeof(mac_key), EVP_sha1(), NULL); HMAC_Update(hctx, pTemp + offset, DEFAULT_PAGESIZE - reserve - offset + IV_SIZE); HMAC_Update(hctx, (const unsigned char*)& nPage, sizeof(nPage)); HMAC_Final(hctx, hash_mac, &hash_len); HMAC_CTX_free(hctx);