C++/CLIでMD5ハッシュを作成するコーディングのメモ書きです。


以下の環境で実行してみました。

OS:Windows XP

処理系:Visual Studio 2008 Express Edition(無料で使えます)


using namespace System;
using namespace System::Security::Cryptography;

int main()
{
//ハッシュ前文字列
String^ beforeStr = "testHash";
//UTF-8バイナリに変換してバイト配列に格納
array<Byte>^ beforeCharArray = System::Text::Encoding::UTF8->GetBytes(beforeStr);
//MD5ハッシュエンジンを作成
MD5^ md5Obj = MD5::Create();
//MD5ハッシュ変換(バイト配列で返す)
array<Byte>^ afterCharArray = md5Obj->ComputeHash(beforeCharArray);
//バイト配列を文字列に変換
System::Text::StringBuilder^ sb = gcnew System::Text::StringBuilder();
for each( Byte tempByte in afterCharArray ){
sb->Append(String::Format("{0:X}",tempByte));
}
//表示
System::Console::WriteLine("変換前:" + beforeStr);
System::Console::WriteLine("変換後:" + sb->ToString());
}

ソースにコメントを書いてあるので大体解かると思いますが、ハッシュを作成するためには名前空間System::Security::Cryptographyを加える必要があります。


また、ここではMD5のハッシュ化ソースを書きましたが、SHA1,SHA256,SHA384のハッシュ化も同様にできます。

それぞれのハッシュエンジンを作成して、ComputeHashメソッドでハッシュを計算するだけです。


MD5、SHA1は簡単にハッシュ値を算出できてしまうと言われているので、実践ではSHA256,SHA384を使う方がいいかもしれません。


・Visual C++のお勧め書籍の紹介


プログラムを作ろう! Microsoft Visual C++ 2008 Express Edition 入門 (マイクロソフト公式解説書)/WINGSプロジェクト
¥1,995
Amazon.co.jp

明快入門Visual C++ 2008 ビギナー編 (林晴比古実用マスターシリーズ)/林 晴比古
¥3,990
Amazon.co.jp