メインページ | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcArcfour.h

RC4互換アルゴリズム Arcfour. [詳細]

#include "dkcOSIndependent.h"

dkcArcfour.hのインクルード依存関係図

Include dependency graph

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

Included by dependency graph

ソースコードを見る。

構成

struct  dkc_Arcfour_State
 arcfour algprithm state (RC4互換のアルゴリズム [詳細]


マクロ定義

#define dkcArcfourDecrypt(p, dest, destsize, src, srcsize)   dkcArcfourEncrypt(p,dest,destsize,src,srcsize)
#define dkcArcfourDecryptNoDest(p, dest_and_src, dest_and_srcsize)   dkcArcfourEncryptNoDest(p,dest_and_src,dest_and_srcsize)

型定義

typedef dkc_Arcfour_State DKC_ARCFOUR_STATE
 arcfour algprithm state (RC4互換のアルゴリズム


関数

DKC_EXTERN DKC_ARCFOUR_STATE
*WINAPI 
dkcAllocArcfour (const unsigned char *key, size_t keylen)
DKC_EXTERN int WINAPI dkcFreeArcfour (DKC_ARCFOUR_STATE **p)
DKC_EXTERN unsigned char WINAPI dkcArcfourByte (DKC_ARCFOUR_STATE *p)
DKC_EXTERN int WINAPI dkcArcfourEncrypt (DKC_ARCFOUR_STATE *p, unsigned char *dest, size_t destsize, const unsigned char *src, size_t srcsize)
DKC_EXTERN void WINAPI dkcArcfourEncryptNoDest (DKC_ARCFOUR_STATE *p, unsigned char *dest_and_src, size_t dest_and_srcsize)


説明

RC4互換アルゴリズム Arcfour.

dkcArcfour.h で定義されています。


マクロ定義

#define dkcArcfourDecrypt p,
dest,
destsize,
src,
srcsize   )     dkcArcfourEncrypt(p,dest,destsize,src,srcsize)
 

dkcArcfour.h58 行で定義されています。

#define dkcArcfourDecryptNoDest p,
dest_and_src,
dest_and_srcsize   )     dkcArcfourEncryptNoDest(p,dest_and_src,dest_and_srcsize)
 

dkcArcfour.h61 行で定義されています。


型定義

typedef struct dkc_Arcfour_State DKC_ARCFOUR_STATE
 

arcfour algprithm state (RC4互換のアルゴリズム

参照元 dkcAllocArcfour(), dkcArcfourByte(), dkcArcfourEncrypt(), dkcArcfourEncrypt_Base(), dkcArcfourEncryptNoDest(), と dkcFreeArcfour().


関数

DKC_EXTERN DKC_ARCFOUR_STATE* WINAPI dkcAllocArcfour const unsigned char *  key,
size_t  keylen
 

引数:
key[in] keyへのポインタ
keylen[in] keyのサイズ
戻り値:
DKC_ARCFOUR_STATE 構造体へのポインタ
覚え書き:
使い終わったらdkcFreeArcfourを使いましょう。

dkcArcfour.c13 行で定義されています。

参照先 DKC_ARCFOUR_STATE, dkcAllocate(), dkc_Arcfour_State::msbox, と NULL.

00015 {
00016 
00017     int i,j;
00018     unsigned char temp;
00019     unsigned char *sb1,sb2[256];
00020     DKC_ARCFOUR_STATE *p;
00021     
00022     memset(sb2,0,sizeof(sb2));
00023     //allocate state struct
00024     p = (DKC_ARCFOUR_STATE *)dkcAllocate(sizeof(DKC_ARCFOUR_STATE));
00025     if(NULL==p){
00026         return NULL;
00027     }
00028     sb1 = p->msbox;
00029     
00030     //initialize
00031     for(i=0;i<256;i++){
00032         sb1[i] = (unsigned char)i;
00033         //嗅ぎ回られないように(なんか、意味あるのか?ないナァ?
00034         //p->msbox2[i] = key [i % keylen];
00035     }
00036     j=i=0;
00037     
00038     for(;j<256;j++){
00039         sb2[j] = key [j % keylen];
00040     }
00041 
00042 
00043     for(i=0;i<256;i++){
00044         //j = (j + sb1 [i] + sb2 [i]) % 256;
00045         j = (j + sb1[i] + sb2[i]) & 0xff;
00046         temp = sb1 [i];
00047         sb1 [i] = sb1 [j];
00048         sb1 [j] = temp;
00049         /*sb1[i] = sb1[j] - sb1[i] ;
00050     sb1[j] -= sb1[i] ;
00051     sb1[i] += sb1[j] ;*/
00052     //SWAP_NUM(sb1[i],sb1[j]);
00053     }
00054     return p;
00055 }

DKC_EXTERN unsigned char WINAPI dkcArcfourByte DKC_ARCFOUR_STATE p  ) 
 

引数:
p[in][out] dkcAllocArcfour()で確保した領域へのポインタ
戻り値:
XORすべき値

dkcArcfour.c57 行で定義されています。

参照先 DKC_ARCFOUR_STATE, DKC_EXTERN, dkc_Arcfour_State::mi, dkc_Arcfour_State::mj, と dkc_Arcfour_State::msbox.

00057                                                                     {
00058   unsigned char i,j,temp;
00059   unsigned char *sb1 = p->msbox;
00060   
00061   //calc
00062   i = (unsigned char )(p->mi+1);// % 256;
00063   j = (unsigned char )(p->mj + sb1[i]);// % 256;
00064   
00065      //swap
00066   temp = sb1 [i];
00067   sb1 [i] = sb1 [j];
00068   sb1 [j] = temp;
00069 
00070   //SWAP_NUM(sb1[i],sb1[j]);
00071   //refresh
00072   p->mi = i;
00073   p->mj = j;
00074   //calc
00075   i = (unsigned char )(sb1 [i] + sb1 [j]);// % 256;
00076   j = (unsigned char )sb1[i];
00077   return j;
00078 }

DKC_EXTERN int WINAPI dkcArcfourEncrypt DKC_ARCFOUR_STATE p,
unsigned char *  dest,
size_t  destsize,
const unsigned char *  src,
size_t  srcsize
 

引数:
p[in] dkcAllocArcfour()で確保した領域へのポインタ
dest[in] 出力バッファへのポインタ
destsize[in] destのサイズ
src[in] 入力バッファへのポインタ
srcsize[in] srcのサイズ
戻り値:
edk_SUCCEEDED で成功

dkcArcfour.c120 行で定義されています。

参照先 DKC_ARCFOUR_STATE, dkcArcfourEncrypt_Base(), edk_BufferOverFlow, と edk_SUCCEEDED.

00123 {
00124     //size_t i=0;
00125     if(destsize < srcsize){
00126         return edk_BufferOverFlow;
00127     }
00128     dkcArcfourEncrypt_Base(p,dest,src,srcsize);
00129 
00130     /*for(i = 0;i < srcsize;i++){
00131         dest[i] = (unsigned char )(src[i] ^ dkcArcfourByte(p) );
00132     }*/
00133 
00134     return edk_SUCCEEDED;
00135 }

DKC_EXTERN void WINAPI dkcArcfourEncryptNoDest DKC_ARCFOUR_STATE p,
unsigned char *  dest_and_src,
size_t  dest_and_srcsize
 

dkcArcfour.c139 行で定義されています。

参照先 DKC_ARCFOUR_STATE, と dkcArcfourEncrypt_Base().

00141 {
00142     dkcArcfourEncrypt_Base(p,dest_and_src,dest_and_src,dest_and_srcsize);
00143 }

DKC_EXTERN int WINAPI dkcFreeArcfour DKC_ARCFOUR_STATE **  p  ) 
 

引数:
dkcAllocArcfourで確保した領域へのポインタへのポインタ 
戻り値:
edk_SUCCEEDEDで成功

dkcArcfour.c145 行で定義されています。

参照先 DKC_ARCFOUR_STATE, dkcFree(), edk_FAILED, と NULL.

00145                                                 {
00146     if(NULL==p){
00147         return edk_FAILED;
00148     }
00149     return dkcFree((void **)p);
00150 }


dkutil_cに対してTue Oct 19 03:35:03 2004に生成されました。 doxygen 1.3.6