Search code examples
cchecksumglib

Why are my SHA256 sums different?


I am using glib to generate SHA256 checksums. It seemed to be working fine, but when I verified the output using sha256sum I got different results. Any ideas what is going on?

char* createChecksumString(const char* buffer) {
    //Create SHA256 checksum using glib
    gchar* checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA256,
        buffer, -1);

    printf("%s\n", buffer);
    printf("%s\n", checksum);

    .
    .
    .
}

.
.
.

const char* msg = "Hello SHA256";
char* checksum = createChecksumString(msg);

The code above produces:

Hello SHA256

70725d0f78cb0967c0e5171f733619712d239e28f2d279e4b3c3ed97f7456fa3

sha256sum produces a different output. See below:

echo "Hello SHA256" | sha256sum

e32bd03f46f51d4a5c903429fea1c31032d8d7aa689c764141b7cebd74f4e140


Solution

  • echo "Hello SHA256" prints a newline.

    Try with echo -n "Hello SHA256" | sha256sum.