を使用して役立つコード サンプルを次に示します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
ライブラリから取得し、適応させる必要がありました。したがって、変更なしでコンパイルできるかどうかはわかりません。しかし、それはあなたを助けるはずです。
一部のパスワードのハッシュ値をバイナリに保存することが安全かどうかを判断するには、それが何のために必要なのかを知る必要があることに注意してください。
特別なパスワードが与えられない限り、プログラムの一部の機能が禁止されると予想される場合、それは役に立ちません。攻撃者は、保存されているパスワードを推測または反転しようとする代わりに、パスワード チェック コード全体を削除する可能性があります。