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

継承図

SFBCipher クラスの継承図

協調図

SFBCipher クラスの協調図

参照

BREW API ICipher

バグ情報

ICIPHER_Flush
ドキュメントエラー A5304T、BREW 2.1 以前の全ての SDK と実機

現在、ICIPHER インタフェースではブロック暗号アルゴリズムをサポートしておりません。 このため、この関数は現在使う必要がありません。

メンバ

パブリック関数
SInt32 Cipher( VoidConstPtr data , SInt32 dataSize , VoidPtr result , SInt32Ptr resultSize )
Cipher( SFXBufferConstRef data , SFXBufferPtr buffer )
データを暗号化または復号化します。
Void Flush( Void )
ブロック暗号化において、 最後の未処理ブロックを決定済みのバイトで埋めることによりブロックを完成させます。
SFCError Init( VoidConstPtr key , SInt32 keySize )
Init( SFXBufferConstRef key )
暗号化または復号化の鍵を初期化します。
static
SFBCipherSmp
NewInstance( AEECLSID clsid )
SFBCipher インターフェイスのインスタンスを取得します。

SFBCipher::Cipher
データを暗号化または復号化します。
[ public ]
SInt32 Cipher(
    VoidConstPtr data      // 暗号化/復号化するデータへのポインタ。
    SInt32 dataSize        // 入力データのサイズ(バイト数)。
    VoidPtr result         // 暗号化/復号化されたデータを格納するバッファ。
    SInt32Ptr resultSize   // 出力のサイズ(バイト数)。
);
[ public ]
SInt32 Cipher(
    SFXBufferConstRef data   // 暗号化/復号化するデータへのポインタ。
    SFXBufferPtr buffer      //暗号化/復号化されたデータを格納するバッファ。
バッファサイズは呼び出しの中で SInt32 にされます。
);

使用例

共通鍵暗号方式で暗号化と復号化を行います。

// 暗号化、復号化で使用する鍵を決めます。
char        key[]    = {"Key Cipher"};
SInt32      keySize = STRLEN(key);

// SFBCipher のインスタンスを作成します。
// ArcFour (RC4 互換) 方式で暗号化を行います。
SFBCipherSmp cipher = SFBCipher::NewInstance(AEECLSID_ARC4);

// 暗号化で使用する鍵を設定します。
if (SUCCESS == cipher->Init(key, keySize))
{
    SFXAnsiString   srcData("Cipher");
    SInt32          size    = src_data.GetLength() + 1;
    VoidPtr         encData = MALLOC(size);
    VoidPtr         decData = MALLOC(size);

    // 暗号化する前のデータを出力します。
    DBGPRINTF("srcData -- %s", srcData.GetBuffer());

    // 暗号化します。
    cipher->Cipher(srcData.GetBuffer(), size, encData, &size);
    // 暗号化したデータを出力します。
    DBGPRINTF("encData -- %s", (char*)encData);

    // 復号化で使用する鍵を設定します。
    cipher->Init(key, keySize);
    // 復号化します。
    cipher->Cipher(encData, size, decData, &size);
    // 復号化したデータを出力します。
    DBGPRINTF("decData -- %s", (char*)decData);

    // バッファを解放します。
    FREE(encData);
    FREE(decData);
}

参照

BREW API ICIPHER_Cipher


SFBCipher::Flush
ブロック暗号化において、 最後の未処理ブロックを決定済みのバイトで埋めることによりブロックを完成させます。
[ public ]
Void Flush(Void);

解説

[Tip] Tip

BREW SDK 2.1 以前では、ICipher インターフェイスで ブロック暗号化アルゴリズムはサポートされていません。 このため、この関数は現在は使う必要がありません。

参照

BREW API ICIPHER_Flush


SFBCipher::Init
暗号化または復号化の鍵を初期化します。
[ public ]
SFCError Init(
    VoidConstPtr key   // 鍵へのポインタ。
    SInt32 keySize     // 鍵サイズ(バイト数)。
);
[ public ]
SFCError Init(
    SFXBufferConstRef key   // 鍵へのポインタ。
);

参照

BREW API ICIPHER_Init


SFBCipher::NewInstance
SFBCipher インターフェイスのインスタンスを取得します。
[ public, static ]
SFBCipherSmp NewInstance(
    AEECLSID clsid   // 暗号化インターフェイスのクラス ID
);

解説

暗号化インターフェイスを作成し、ICipher として返します。 クラス ID として指定できるのは下記のいずれかです。 指定したクラス ID に応じて使用する暗号化アルゴリズムが変わります。

AEECLSID_ARC4
AEECLSID_DES_ENCRYPT
AEECLSID_DES_DECRYPT
AEECLSID_3DES_ENCRYPT
AEECLSID_3DES_DECRYPT