Вот пример кода, который может вам помочь, используя OpenSSL
.
#include <openssl/evp.h>
bool SHA256Hash(const char* buf, size_t buflen, char* res, size_t reslen)
{
if (reslen >= 32)
{
EVP_MD_CTX mdctx;
EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx, EVP_sha256(), NULL);
EVP_DigestUpdate(&mdctx, buf, buflen);
EVP_DigestFinal_ex(&mdctx, res, &len);
EVP_MD_CTX_cleanup(&mdctx);
return (len == 32);
}
return false;
}
Я взял этот образец из библиотеки systools
и мне пришлось его адаптировать. Так что я не уверен, что он компилируется без изменений. Тем не менее, это должно помочь вам.
Обратите внимание, что для определения безопасности хранения хеш-значения какого-либо пароля в вашем двоичном файле мы должны знать, для чего он нужен.
Если вы ожидаете, что это запретит некоторые функции вашей программы, если не указан какой-либо специальный пароль, тогда это бесполезно: злоумышленник, скорее всего, удалит весь код проверки пароля вместо того, чтобы пытаться угадать или отменить сохраненный пароль. 1010 *