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

継承図

SFBCipher クラスの継承図

バージョン

BREW 2.0 BREW 2.1 BREW 3.1 BREW 4.0

参照

BREW API ICipher

メンバ

パブリック関数
SInt32 Cipher( VoidConstPtr data , SInt32 dataSize , VoidPtr result , SInt32Ptr resultSize )
データを暗号化または復号化します。
SInt32 Cipher( SFXBufferConstRef data , SFXBufferPtr buffer )
データを暗号化または復号化します。
Void Flush( Void )
ブロック暗号化において、 最後の未処理ブロックを決定済みのバイトで埋めることによりブロックを完成させます。
SFCError Init( VoidConstPtr key , SInt32 keySize )
暗号化または復号化の鍵を初期化します。
SFCError Init( SFXBufferConstRef key )
暗号化または復号化の鍵を初期化します。
static
SFBCipherSmp
NewInstance( AEECLSID clsid , SFCErrorPtr exception = null )
SFBCipher インスタンスを生成します。
プロテクト関数
static
SFBBaseSmp
FactoryByCreate( AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを生成します。
static
SFBBaseSmp
FactoryByQuery( SFBQuerySmpConstRef query , AEECLSID id , SFCErrorPtr exception = null ) (SFBBase から継承)
指定したクラス ID のインターフェースのインスタンスを指定した SFBQuery インスタンスを使用して生成します。

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

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

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

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

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

参照

BREW API ICIPHER_Cipher


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

解説

[Tip] Tip

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

参照

BREW API ICIPHER_Flush


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

戻り値

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

参照

BREW API ICIPHER_Init


SFBCipher::NewInstance
SFBCipher インスタンスを生成します。
[ public, static ]
SFBCipherSmp NewInstance(
    AEECLSID clsid                 // 暗号化インターフェースの ClassID
    SFCErrorPtr exception = null   // エラー値
);

解説

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

AEECLSID_ARC4
AEECLSID_DES_ENCRYPT
AEECLSID_DES_DECRYPT
AEECLSID_3DES_ENCRYPT
AEECLSID_3DES_DECRYPT