MD5を生成するサンプル

openssl付属のライブラリを使ったサンプル。そのままだとバイナリのMD5が取れるので16進に変換するサンプル。

//注意 コンパイル時に -lssl を付けること。

#include <openssl/md5.h>

void to_hex( unsigned char *md, int length, unsigned char *md_hex ) {
	static char tbl[ 16 ] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
	
	int j=0;
	for(int i=0; i<length; i++){
		md_hex[j++] = tbl[ ( unsigned char )md[i] >> 4 ];
		md_hex[j++] = tbl[ ( unsigned char )md[i] & 0x0f ];
	}
	md_hex[j] = '\0';
}

	unsigned char encryptdata[16];
	memset(encryptdata, '\0', 16);
	unsigned char encryptdata_hex[48];
	MD5((unsigned char *)"mariners", strlen("mariners"), encryptdata);
	to_hex(encryptdata, 16, encryptdata_hex);