#include "dkcArcfour.h"
#include "dkcStdio.h"
dkcArcfour.cのインクルード依存関係図

関数 | |
| DKC_ARCFOUR_STATE *WINAPI | dkcAllocArcfour (const unsigned char *key, size_t keylen) |
| DKC_EXTERN unsigned char WINAPI | dkcArcfourByte (DKC_ARCFOUR_STATE *p) |
| DKC_INLINE void | dkcArcfourEncrypt_Base (DKC_ARCFOUR_STATE *p, unsigned char *dest, unsigned const char *src, size_t srcsize) |
| int WINAPI | dkcArcfourEncrypt (DKC_ARCFOUR_STATE *p, unsigned char *dest, size_t destsize, const unsigned char *src, size_t srcsize) |
| void WINAPI | dkcArcfourEncryptNoDest (DKC_ARCFOUR_STATE *p, unsigned char *dest_and_src, size_t dest_and_srcsize) |
| int WINAPI | dkcFreeArcfour (DKC_ARCFOUR_STATE **p) |
dkcArcfour.c で定義されています。
|
||||||||||||
|
dkcArcfour.c の 13 行で定義されています。 参照先 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 = 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 }
|
|
|
dkcArcfour.c の 57 行で定義されています。 参照先 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 }
|
|
||||||||||||||||||||||||
|
dkcArcfour.c の 120 行で定義されています。 参照先 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 }
|
|
||||||||||||||||||||
|
dkcArcfour.c の 80 行で定義されています。 参照先 DKC_ARCFOUR_STATE, DKC_INLINE, dkc_Arcfour_State::mi, dkc_Arcfour_State::mj, と dkc_Arcfour_State::msbox. 参照元 dkcArcfourEncrypt(), と dkcArcfourEncryptNoDest().
00082 {
00083
00084 size_t cc;
00085 unsigned char i,j;
00086 unsigned char *sb1 = p->msbox;
00087 unsigned char temp;
00088
00089 //calc
00090 i = (unsigned char )(p->mi);
00091 j = (unsigned char )(p->mj);
00092
00093 for(cc = 0;cc < srcsize;cc++){
00094 //calc
00095 i = (unsigned char )(i+1);
00096 j = (unsigned char )(j + sb1[i]);
00097
00098 //swap
00099
00100 temp = sb1 [i];
00101 sb1 [i] = sb1 [j];
00102 sb1 [j] = temp;
00103
00104
00105 //SWAP_NUM_EX(sb1[i],sb1[j],unsigned char);
00106
00107 //calc
00108 dest[cc] = (unsigned char )
00109 (src[cc] ^ (unsigned char )sb1[
00110 (unsigned char )(sb1 [i] + sb1 [j])
00111 ]
00112 );
00113 }
00114 //refresh
00115 p->mi = i;
00116 p->mj = j;
00117
00118 }
|
|
||||||||||||||||
|
dkcArcfour.c の 139 行で定義されています。 参照先 DKC_ARCFOUR_STATE, と dkcArcfourEncrypt_Base().
00141 {
00142 dkcArcfourEncrypt_Base(p,dest_and_src,dest_and_src,dest_and_srcsize);
00143 }
|
|
|
dkcArcfour.c の 145 行で定義されています。 参照先 DKC_ARCFOUR_STATE, dkcFree(), edk_FAILED, と NULL.
00145 {
00146 if(NULL==p){
00147 return edk_FAILED;
00148 }
00149 return dkcFree(p);
00150 }
|
1.3.6