C言語でOpenSSLのライブラリを使ってSHA256ハッシュ値を取得するためのメモ。
概要
SHA256_CTX
でコンテキストを生成、SHA256_Init
で初期化して、SHA256_Update
でソースデータを追加していき、最後にSHA256_Final
でバッファにハッシュ値を書き出す。
ハッシュ値はSHA256の名前の通り、32 bytesとなる。
ソースコード
よくあるサンプルはソース(src)とバッファー(buffer)のみを渡す例が多いが、入力が文字列でないことも考えられるので、ソースの長さ(str_len)も一緒に渡したほうがいい。
#include <openssl/sha.h> // SHA Library
int compute_sha256(unsigned char * src, unsigned int src_len, unsigned char * buffer) {
SHA256_CTX c;
SHA256_Init(&c);
SHA256_Update(&c, src, src_len);
SHA256_Final(buffer, &c);
return 0;
}
エラー処理はしていないので、必要なら適宜してください。
なお、コンパイル時は-lcrypto
オプションが必要です。
# gcc hogehoge.c -lcrypto