ハッシュ関数は任意のデータから短い値を得るための関数です。
その値をハッシュ(hash)あるいはダイジェス(digest)という。
wikipedia: SSL (Secure Sockets Layer) / TSL(Transport Layer Security)
Openssl にはハッシュ関数として
sha1, sha256, sha512, md5 が用意されている。
Mac の場合、OpenSSLはプレインストールされている。
brew コマンドで最新版をインストールすることもできる。
qiita: Homebrewとopensslのインストール
ハッシュ関数の使い方は、下記を参考にした。
C言語で OpenSSL の SHA256 ハッシュ関数を使ってみる
int main(int argc, char *argv[]) { char *message = {"Sample Message"}; unsigned char digest[SHA256_DIGEST_LENGTH]; SHA256_CTX sha_ctx; SHA256_Init(&sha_ctx); SHA256_Update(&sha_ctx, message, sizeof(message)); SHA256_Final(digest, &sha_ctx); printf("%s\n", message); for (int i = 0; i < sizeof(digest); ++i) { printf("%x", digest[i]); } printf("\n"); return 0; }
このコードはSHA256のものです。
SHA1は下記のようになる。
void gen_sha1(char* message, unsigned char* digest) { SHA_CTX ctx; // initialize the context SHA1_Init(&ctx); // input message SHA1_Update(&ctx, message, sizeof(message)); // output to digest SHA1_Final(digest, &ctx); }
サンプルコードを Github に公開した。 https://github.com/ohwada/MAC_cpp_Samples/tree/master/openssl/hash