前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFBHash
IHash インターフェースのラッパークラスです。
#include <SFBHash.h.hpp>
class SFBHash : public SFBBase;
SFMTYPEDEFWRAPPER(SFBHash)

継承図

SFBHash クラスの継承図

バージョン

BREW 2.0 BREW 2.1 BREW 3.1 BREW 4.0

参照

BREW API IHash

メンバ

パブリック関数
SFCError GetResult( VoidPtr data , SInt32Ptr size )
すべての SFBHash::Update 呼び出し終了後のハッシュ結果を取得します。
SFCError GetResult( SFXBufferPtr data )
すべての SFBHash::Update 呼び出し終了後のハッシュ結果を取得します。
static
SFBHashSmp
NewInstance( AEECLSID clsid = AEECLSID_MD5 , SFCErrorPtr exception = null )
SFBHash インスタンスを生成します。
Void Restart( Void )
ハッシュ操作を再開します。
SFCError SetKey( VoidConstPtr key , SInt32 keySize )
HMAC 鍵付きハッシュの鍵を初期化します。
SFCError SetKey( SFXBufferConstRef key )
HMAC 鍵付きハッシュの鍵を初期化します。
Void Update( VoidPtr data , SInt32 dataLength )
ハッシュ オブジェクトにデータを追加更新します。
Void Update( SFXBufferPtr data )
ハッシュ オブジェクトにデータを追加更新します。
プロテクト関数
static
SFBBaseSmp
FactoryByCreate( AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを生成します。
static
SFBBaseSmp
FactoryByQuery( SFBQuerySmpConstRef query , AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを指定した SFBQuery インスタンスを使用して生成します。

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

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • 引数が null なとき: SFERR_INVALID_PARAM
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

解説

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

参照

BREW API IHASH_GetResult | SFBHash::Update


SFBHash::NewInstance
SFBHash インスタンスを生成します。
[ public, static ]
SFBHashSmp NewInstance(
    AEECLSID clsid = AEECLSID_MD5   // ハッシュアルゴリズムの ClassID
    SFCErrorPtr exception = null    // エラー値
);

解説

使用できる 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);

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

// 再度ハッシュを行う
ZEROAT(result);
len = 32;

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

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

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

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

参照

BREW API IHASH_Restart


SFBHash::SetKey
HMAC 鍵付きハッシュの鍵を初期化します。
[ public ]
SFCError SetKey(
    VoidConstPtr key   // 鍵へのポインタ
    SInt32 keySize     // 鍵サイズ 
);
[ public ]
SFCError SetKey(
    SFXBufferConstRef key   // 鍵へのポインタ
        
);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY
  • 鍵が無効のとき: AEE_CRYPT_INVALID_KEY

バージョン

この関数は、BREW 3.1 から使用可能です

解説

[Caution] 注意

この関数をBREW 3.1 以前の BREW で使用すると、アプリケーションがクラッシュします。

参照

BREW API IHASH_Update


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);

// 結果をログに表示する
TRACE("*** result: %s ***", result);

参照

BREW API IHASH_Update