C言語でOpenSSLのライブラリを使ってMD5ハッシュ値を取得するためのメモ。基本的にはSHA256(C言語OpenSSLでSHA256ハッシュ計算)と同じ。
概要
MD5_CTX
でコンテキストを生成、MD5_Init
で初期化して、MD5_Update
でソースデータを追加していき、最後にMD5_Final
でバッファにハッシュ値を書き出す。
ハッシュ値は16 bytesとなる。
ソースコード
SHA256と同じく、入力が文字列でないことも想定して、ソースの長さ(str_len)も一緒に渡したほうがいい(ソース(src)に0が含まれるとハッシュ値が期待どおりにならない)。
#include <openssl/md5.h> // MD5 Library
int compute_md5(unsigned char * src, unsigned int src_len, unsigned char * buffer) {
MD5_CTX c;
MD5_Init(&c);
MD5_Update(&c, src, src_len);
MD5_Final(buffer, &c);
return 0;
}
エラー処理はしていないので、必要なら適宜してください。
なお、コンパイル時は-lcrypto
オプションが必要です。
# gcc hogehoge.c -lcrypto