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