前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0
SFBHash
IHash インターフェイスのラッパークラスです。
#include <SFBHash.h.hpp>
class SFBHash : public SFBBase;
SFMTYPEDEFWRAPPER(SFBHash)

継承図

SFBHash クラスの継承図

協調図

SFBHash クラスの協調図

参照

BREW API IHash

メンバ

パブリック関数
SFCError GetResult( VoidPtr data , SInt32Ptr size )
GetResult( SFXBufferPtr data )
すべての SFBHash::Update() 呼び出し終了後のハッシュ結果を取得します。
static
SFBHashSmp
NewInstance( AEECLSID clsid = AEECLSID_MD5 )
SFBHash インターフェイスのインスタンスを取得します。
Void Restart( Void )
ハッシュ操作を再開始します。
Void Update( VoidPtr data , SInt32 dataLength )
Update( SFXBufferPtr data )
ハッシュ オブジェクトにデータを供給します。

SFBHash::GetResult
すべての SFBHash::Update() 呼び出し終了後のハッシュ結果を取得します。
[ public ]
SFCError GetResult(
    VoidPtr data     // ハッシュ結果を取得するデータへのポインタ。
    SInt32Ptr size   // バッファ data のサイズへのポインタ。リターン時は、ハッシュ結果のサイズが格納される。
);
[ public ]
SFCError GetResult(
    SFXBufferPtr data   // ハッシュ結果を取得するためのバッファ。サイズは自動的に変換される。
);

解説

注意:バッファサイズは SInt32 の値までの制限があります。

参照

BREW API IHASH_GetResult


SFBHash::NewInstance
SFBHash インターフェイスのインスタンスを取得します。
[ public, static ]
SFBHashSmp NewInstance(
    AEECLSID clsid = AEECLSID_MD5   // ハッシュアルゴリズムの ClassID
);

解説

使用できる ClassID には次のものがあります。

AEECLSID_MD2
AEECLSID_MD5
AEECLSID_SHA1

SFBHash::Restart
ハッシュ操作を再開始します。
[ public ]
Void Restart(Void);

解説

これは新しいデータストリームをハッシュする場合に必要となります。

使用例

異なるデータストリームを立て続けにハッシュし、ログに表示します。

AChar     srcString[]     = {"message for you..."};
AChar     srcStringNext[] = {"next message for you..."};
AChar     result[32]      = {0};
SInt32    len             = 32;

// SFBHash インスタンスを生成します。
SFBHashSmp  hash = SFBHash::NewInstance();

// ハッシュします。
hash->Update(srcString, STRLEN(srcString));

// ハッシュ後の結果を取得します。
hash->GetResult(result, &len);

// ハッシュ後の結果をログに表示します。
DBGPRINTF("*** result: %s ***", result);

// 再度ハッシュを行います。
ZEROAT(result);
len = 32;

// データストリームの初期化をします。
hash->Restart();

// 1 バイトづつハッシュをします。
ACharPtr i = srcStringNext;
for (; *i; i++)
    hash->Update(i, 1);

// ハッシュ後の結果を取得します。
hash->GetResult(result, &len);

// ハッシュ後の結果をログに表示します。
DBGPRINTF("*** next result: %s ***", result);

参照

BREW API IHASH_Restart


SFBHash::Update
ハッシュ オブジェクトにデータを供給します。
[ public ]
Void Update(
    VoidPtr data        // ハッシュするデータへのポインタ。
    SInt32 dataLength   // ハッシュする(pbData に格納された)データの長さ。
);
[ public ]
Void Update(
    SFXBufferPtr data   // ハッシュするデータへのポインタ。null の場合、何もしない。
);

解説

不連続の長いデータ ストリームをハッシュする場合、 この関数を複数回呼び出します。

使用例

文字列をハッシュし、ログに結果を表示します。

AChar     srcString[] = {"message for you..."};
AChar     result[32]  = {0};
SInt32    len         = 32;

// SFBHash インスタンスを生成します。
SFBHashSmp  hash = SFBHash::NewInstance();

// ハッシュします。
hash->Update(srcString, STRLEN(srcString));

// ハッシュ後の結果を取得します。
hash->GetResult(result, &len);

// 結果をログに表示します。
DBGPRINTF("*** result: %s ***", result);

参照

BREW API IHASH_Update