003
18.05.2011, 10:19 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
hier ist ein (MFC)-Codesnippet
C++: |
CString &Cmd5Capi::Digest(CString & csBuffer) { HCRYPTPROV hCryptProv; HCRYPTHASH hHash; BYTE bHash[0x7f]; DWORD dwHashLen= 16; // The MD5 algorithm always returns 16 bytes. DWORD cbContent= csBuffer.GetLength(); BYTE* pbContent= (BYTE*)csBuffer.GetBuffer(cbContent);
if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET)) {
if(CryptCreateHash(hCryptProv, CALG_MD5, // algorithm identifier definitions see: wincrypt.h 0, 0, &hHash)) { if(CryptHashData(hHash, pbContent, cbContent, 0)) {
if(CryptGetHashParam(hHash, HP_HASHVAL, bHash, &dwHashLen, 0)) { // Make a string version of the numeric digest value csDigest.Empty(); CString tmp; for (int i = 0; i<16; i++) { tmp.Format("%02x", bHash[i]); csDigest+=tmp; }
} else csDigest=_T("Error getting hash param");
} else csDigest=_T("Error hashing data"); } else csDigest=_T("Error creating hash");
} else csDigest=_T("Error acquiring context");
CryptDestroyHash(hHash); CryptReleaseContext(hCryptProv, 0); csBuffer.ReleaseBuffer(); return csDigest; }
|
(Quelle: www.codeproject.com/KB/security/cryptest.aspx)
das muss man ja ggf nur umschreiben. Im Prinzip musst du halt dann die Datei(en) einlesen, die durch die Krypto-funktionen da jagen und dir den digestfür jede file merken. -- class God : public ChuckNorris { }; |