![]() ![]() ![]() ![]() Blowfish暗号化データをMSXML2 DOMオブジェクトに直接ロードするこの記事のURLhttp://japan.internet.com/developer/20051101/26.html
著者:Tom Archer
海外internet.com発の記事
はじめに MSXML2ライブラリを使用するときは、通常は、 DecryptFile2Bstrヘルパー関数 説明を続ける前に、1993年にBruce Schneier氏がBlowfish暗号化アルゴリズムを発表して以来、多くの実装が登場していることを述べなければなりません。私は、高速で信頼できるデータ暗号化/復号のための暗号化手段を必要としていたのですが、その目的にはGeorge Anescu氏による実装を使用するのが特に簡単であると思いました。そのため、私の関数は、George Anescu氏による 私が解決策を探しているときに最初に学んだことは、 下記のコードからわかるとおり、 BSTR DecryptFile2Bstr(char* inputFileName, char* password) { try { int requiredFileSize; CBlowFish oBlowFish((unsigned char*)password, sizeof(password)); char *buffer = GetFormattedFileContent( inputFileName, requiredFileSize ); oBlowFish.Decrypt((unsigned char *)buffer, requiredFileSize); return _com_util::ConvertStringToBSTR(buffer); } catch ( char *ex ) { throw ex; } } Blowfishアルゴリズムは8バイトのブロックをベースとするため、 char* GetFormattedFileContent(char *filePath, int &requiredFileSize) { FILE *fp = fopen(filePath, "r+b"); int fileSize = FileSize(fp); int index = fileSize; if ( (fileSize % 8) != 0 ) requiredFileSize = ((fileSize / 8) + 1) * 8; else requiredFileSize = fileSize; char *buffer = new char[requiredFileSize + 1]; fread(buffer, sizeof(char), fileSize, fp); buffer[fileSize] = 0; fclose(fp); while (index < requiredFileSize) buffer[index++] = 0; return buffer; } int FileSize(FILE *fp) { char buffer[1]; int count = 0; fseek(fp, 0, SEEK_SET); while (fread(buffer, sizeof(buffer), 1, fp) != 0) count++; fseek(fp, 0, SEEK_SET); return count; } DecryptFile2Bstr関数の使用 データが #import <msxml4.dll& named_guids using namespace MSXML2; ... ::CoInitialize(NULL); MSXML2::IXMLDOMDocumentPtr plDomDocument; HRESULT hr = plDomDocument.CreateInstance(MSXML2::CLSID_DOMDocument); if (SUCCEEDED(hr)) { // load the file as an XML document BSTR = DecryptFile2Bstr(L"MyFile.xml", DEFS_ENC_PASSWORD); variant_t vResult = plDomDocument->loadXML(xmlfile); ... 今後について MSMXL2 著者紹介Tom Archer(Tom Archer)
.NETプログラマの教育・指導、プロジェクト管理コンサルティングを専門とする研修会社、Archer Consulting Groupを経営。同社がどのように貴社の開発コストを削減させ、ソフトウェアを市場に早く送り出し、製品からの収入を増やすのに役立ってくれるのかを知りたい場合は、同社のWebサイトをお訪ねください。
japan.internet.comのウエブサイトの内容は全て、国際法、日本国内法の定める著作権法並びに商標法の規定によって保護されており、その知的財産権、著作権、商標の所有者はインターネットコム株式会社、インターネットコム株式会社の関連会社または第三者にあたる権利者となっています。
本サイトの全てのコンテンツ、テキスト、グラフィック、写真、表、グラフ、音声、動画などに関して、その一部または全部を、japan.internet.comの許諾なしに、変更、複製、再出版、アップロード、掲示、転送、配布、さらには、社内LAN、メーリングリストなどにおいて共有することはできません。 ただし、コンテンツの著作権又は所有権情報を変更あるいは削除せず、利用者自身の個人的かつ非商業的な利用目的に限ってのみ、本サイトのコンテンツをプリント、ダウンロードすることは認められています。 |