【SHA1の場合】
openssl.exe sha1 [ファイル名]
Visual Studioを使ったC++(コンソールアプリ)のサンプルは下記のような感じになります。
サンプルではWindows8 RP版のisoイメージのファイルハッシュを計算してテストしてみました。
#include "stdafx.h"
#include "Hash.h" // OpenSSLのinclude
#define TARGET_FILE "E:\\Windows8-ReleasePreview-32bit-Japanese.iso"
#define BUFSIZE (1024 * 16) // OpenSSLの定義と同じ
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char sha1hash[SHA_DIGEST_LENGTH] = { 0 };
unsigned char buf[BUFSIZE];
DWORD dwStart = 0;
DWORD dwEnd = 0;
// SHA1 using OpneSSL lib
printf("Calculate file hash for sha1\n");
dwStart = ::GetTickCount();
SHA_CTX ctx;
SHA1_Init(&ctx);
CFile file(TARGET_FILE, CFile::modeRead);
UINT nRead = 0;
do{
nRead = file.Read(buf, BUFSIZE);
if(nRead > 0){
SHA1_Update(&ctx, buf, nRead);
}
}while(nRead == BUFSIZE);
SHA1_Final(sha1hash, &ctx);
dwEnd = ::GetTickCount() - dwStart;
printf("SHA1(%s)= ", TARGET_FILE);
for(int i = 0; i < SHA_DIGEST_LENGTH; i++){
printf("%.2x",sha1hash[i]);
}
printf("\n");
printf("Elapsed Time(ms) = %d\n", dwEnd);
return 0;
}
※OpenSSLライブラリとは、stdafx.hで下記のように書くか、設定画面でリンクの設定をしてください。// OpenSSL lib #pragma comment(lib, "openssl/lib/libeay32.lib") #pragma comment(lib, "openssl/lib/ssleay32.lib")
【MD5の場合】
openssl.exe md5 [ファイル名]
ソースの方はMD5_~に変わるだけで、あとは全く同じなので省略します。

0 件のコメント:
コメントを投稿