C言語OpenSSLでSHA256ハッシュ計算

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

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です