So-net無料ブログ作成

CryptBinaryToString/CryptStringToBinary [CodeTips]

このブログは放置しておくと「荒れ野」になってしまうので(^^;、それを回避するために備忘録的なコードを載せておくことにします。

今回はCryptAPIのCryptBinaryToString/CryptStringToBinary関数です。

// 'cl -DUNICODE <sourcefilename>'
#ifndef UNICODE
#define UNICODE
#endif

#include <stdio.h>
#include <windows.h>
#include <wincrypt.h>

#pragma comment(lib, "crypt32.lib") 
    
void wmain()
{
    WCHAR wszString[4096];
    DWORD cchString;

    /* test sample data (this data is nonsensical) */
    UCHAR data[] = "\xA1\x23\x1C\x56\x4f\x48\x06\x71\x01\x39\xCC\x55\xAA\x01\x02\x03\xac\xde\xff\xa9";

    /* encode */
    BYTE *pbBinary = data; 
    DWORD cbBinary = sizeof(data) - 1; // exclude termination null
    cchString = ARRAYSIZE(wszString);
    CryptBinaryToString(pbBinary,cbBinary,CRYPT_STRING_BASE64|CRYPT_STRING_NOCRLF,wszString,&cchString);

    printf("\nbase64:\n%S\n",wszString);
    
    /* decode */
    BYTE bufDecode[4096];
    DWORD cbDecode = ARRAYSIZE(bufDecode);
    CryptStringToBinary(wszString,cchString,CRYPT_STRING_BASE64,bufDecode,&cbDecode,NULL,NULL);

    /* print */
    cchString = ARRAYSIZE(wszString);
    CryptBinaryToString(bufDecode,cbDecode,CRYPT_STRING_HEXASCIIADDR,wszString,&cchString);
    
    printf("\nhex dump:\n%S\n",wszString);
}

使用法を示す事が目的の為、エラー処理は一切省いてあります。バッファも単純に扱っています。実際には出力データの長さを問い合わせるなどの処理が必要となるでしょう。
コンパイルし、実行すると以下の結果になります。今回はtest.cppというソースに落とし、test.exeという実行ファイルを作成しました。

C:\Test\code>cl -DUNICODE test.cpp


C:\Test\code>test

base64:
oSMcVk9IBnEBOcxVqgECA6ze/6k=

hex dump:
0000    a1 23 1c 56 4f 48 06 71  01 39 cc 55 aa 01 02 03   .#.VOH.q.9.U....
0010    ac de ff a9                                        ....


FSDirWalker 1.2を公開しました [ソフトウェア]

FSDirWalker 1.2.220.0を公開しました。

簡易検索の結果から簡単なファイル操作を行える様にした他、ファイルのリネームコピーなどのコマンドを追加ししました。

ダウンロードはこちらから:
http://www001.upp.so-net.ne.jp/yamashita/products/fstools/fsdirwalker/fsdirwalker.htm"

詳細な履歴はこちらから。

fsdw.png

コメント(0) 

FSJournalWalker Beta2を公開しました [ソフトウェア]

FSJournalWalker Beta2を公開しました。

ダウンロードはこちらから:
http://www001.upp.so-net.ne.jp/yamashita/products/fstools/fsjnlwalker/fsjnlwalker.htm

部分的な変更や修正、BugFixに加えて、日本語リソースを追加しました。

コメント(0) 

FSJournalWalker Betaを公開しました [ソフトウェア]

10月3日にFSJournalWalker を公開しました。

現在はBeta版とさせていただいております。

ダウンロードはこちらから:
http://www001.upp.so-net.ne.jp/yamashita/products/fstools/fsjnlwalker/fsjnlwalker.htm

NTFSなどファイルシステムがサポートする、変更ジャーナルの内容を表示するツールです。
変更ジャーナルとはファイルの作成や削除、書き込みなど各種変更イベントを記録する(変更の内容ではなく「変更された」という事実だけを記録する)Windowsの機能です。

変更ジャーナルはユーザーが有効/無効を設定でき、有効になっている場合このFSJournalWalkerでジャーナルレコードを参照できます。

余談ですが、税務関係の査察の際に、この変更ジャーナルの内容を調べられたとか。

自分自身で使用していたものを、なんとかネットで公開できるレベルまで整備したものですので、粗削りではありますが、一般的な使用状況のデスクトップ/ノート/タブレットPC等の環境では使用できると思います。

コメント(0) 

FSDirWalker 1.1を公開しました [ソフトウェア]

8月29日にFSDirWalker 1.1.200.0を公開しました。

ダウンロードはこちらから:
http://www001.upp.so-net.ne.jp/yamashita/products/fstools/fsdirwalker/fsdirwalker.htm"

新機能としてACLエディタ及び代替ストリームエディタを追加しました。また、簡易的ながらファイルリストに表示されるファイルのドラッグ&ドロップにも対応しました。

詳細な履歴はこちらから。

コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。