小编alu*_*ard的帖子

Win32 MD5哈希器的奇怪行为

我使用此函数生成字符串的哈希

std::string MD5(string input)
{
    BYTE BytesHash[33];//!
    DWORD dwHashLen;
    string final;   
    HCRYPTPROV CryptProv;
    HCRYPTHASH CryptHash;
    if (CryptAcquireContext(&CryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET)) {
        if (CryptCreateHash(CryptProv, CALG_MD5, 0, 0, &CryptHash))     {
            if (CryptHashData(CryptHash, (BYTE*)input.c_str(), input.length(), 0))          {
                if (CryptGetHashParam(CryptHash, HP_HASHVAL, BytesHash, &dwHashLen, 0))             {
                    final.clear();
                    string hexcharset = "0123456789ABCDEF";
                    for (int j = 0; j < 16; j++) {
                        final += hexcharset.substr(((BytesHash[j] >> 4) & 0xF), 1);
                        final += hexcharset.substr(((BytesHash[j]) & 0x0F), 1);
                    }
                }
            }
        }
    }   CryptDestroyHash(CryptHash);
    CryptReleaseContext(CryptProv, …
Run Code Online (Sandbox Code Playgroud)

c++ winapi md5

0
推荐指数
1
解决办法
111
查看次数

标签 统计

c++ ×1

md5 ×1

winapi ×1