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

dkcVernam.c

説明を見る。
00001 
00008 #include "dkcVernam.h"
00009 #include "dkcMath.h"
00010 #include "dkcStdio.h"
00011 
00012 
00013 
00014 
00015 static WINAPIV dkcRandomV(ULONG *seed,ULONG Max_){
00016     return dkcRandom(seed,Max_);
00017 }
00018 
00019 void WINAPI dkcVernamEncrypt(BYTE *buffer,size_t size,const BYTE *key,size_t keysize,
00020                                                          ULONG seed,DKC_VERNAM_F_TYPE ff)
00021 {
00022     size_t i;
00023     int pos;
00024     if(NULL==ff){
00025         ff = dkcRandomV;
00026     }
00027     for(i=0;i<size;i++){
00028         pos = ff(&seed,keysize);
00029         buffer[i] ^= key[pos];
00030     }
00031 }
00032 
00033 /*
00034 static int WINAPI dkcVernamEncrypt2_Base(BYTE *buffer,size_t size,const BYTE *key,size_t keysize,
00035                                                             const char *op)
00036 {
00037     size_t i,j,k;// i=buffer j = key k = op 
00038     size_t opl = strlen(op);
00039 
00040     for(i=0,j=0,k=0;
00041         i<size;
00042         i++,j++,k++)
00043     {
00044         if(k<opl){
00045             k = 0;
00046         }
00047         if(j<keysize){
00048             j = 0;
00049         }
00050         switch(op[k]){
00051         case '+':
00052             buffer[i] += key[j];
00053             break;
00054         case '-':
00055             buffer[i] -= key[j];
00056             break;
00057         case '^':
00058             buffer[i] ^= key[j];
00059             break;
00060         default:
00061             return edk_FAILED;
00062         }
00063     }
00064     return edk_SUCCEEDED;
00065 }
00066 */
00067 
00068 
00069 
00070 void WINAPI dkcEasyVernamEncrypt(BYTE *buffer,size_t size,ULONG seed,DKC_VERNAM_F_TYPE ff)
00071 {
00072     size_t i;
00073     BYTE num;
00074     if(NULL==ff){
00075         ff = dkcRandomV;
00076     }
00077     for(i=0;i<size;i++){
00078         num = (BYTE)(ff(&seed,UCHAR_MAX));
00079         buffer[i] ^= num;
00080     }
00081 }
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 

dkutil_cに対してSun Jul 18 22:45:22 2004に生成されました。 doxygen 1.3.6