का उपयोग कर फ़ाइल के SHA256 हैश की गणना और मुद्रित करें I फ़ाइल के SHA256 योग की गणना करने के लिए OpenSSL/libcrypto का उपयोग करके एक सी फ़ंक्शन लिखने का प्रयास कर रहा हूं। मैं एडम लैमर के सी ++ उदाहरण here पर अपना कोड लगा रहा हूं।OpenSSL
int main (int argc, char** argv)
{
char calc_hash[65];
calc_sha256("file.txt", calc_hash);
}
int calc_sha256 (char* path, char output[65])
{
FILE* file = fopen(path, "rb");
if(!file) return -1;
char hash[SHA256_DIGEST_LENGTH];
SHA256_CTX sha256;
SHA256_Init(&sha256);
const int bufSize = 32768;
char* buffer = malloc(bufSize);
int bytesRead = 0;
if(!buffer) return -1;
while((bytesRead = fread(buffer, 1, bufSize, file)))
{
SHA256_Update(&sha256, buffer, bytesRead);
}
SHA256_Final(hash, &sha256);
sha256_hash_string(hash, output);
fclose(file);
free(buffer);
return 0;
}
void sha256_hash_string (char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65])
{
int i = 0;
for(i = 0; i < SHA256_DIGEST_LENGTH; i++)
{
sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
}
outputBuffer[64] = 0;
}
समस्या यह .... एक उदाहरण फ़ाइल के लिए नीचे गणना की रकम पर एक नज़र है:: * ढेर का पता चला स्मैश
Known good SHA256: 6da032d0f859191f3ec46a89860694c61e65460d54f2f6760b033fa416b73866
Calc. by my code: 6dff32ffff59191f3eff6affff06ffff1e65460d54ffff760b033fff16ff3866
मैं भी हो
यहाँ मेरी कोड है * जब कोड निष्पादित समाप्त हो जाता है।
क्या कोई देखता है कि मैं क्या गलत कर रहा हूं?
धन्यवाद!
मेरे पास प्रोटोटाइप घोषित हैं। – dan6470
क्यों const bufSize 32768 के आकार के साथ तय किया गया है? यह –