メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

# dkcVernam.h

単純な Varnam 暗号 [詳細]

`#include "dkcOSIndependent.h"`

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

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

ソースコードを見る。

## マクロ定義
#define | dkcVernamDecrypt(buffer, size, key, keysize, seed, ff) dkcVernamEncrypt(buffer,size,key,keysize,seed,ff)
#define | dkcEasyVernamDecrypt(buffer, size, seed, ff) dkcEasyVernamEncrypt(buffer,size,seed,ff)
## 型定義
typedef int(WINAPIV * | DKC_VERNAM_F_TYPE )(ULONG *, ULONG)
| VERNAM暗号用ランダムコールバック
## 関数
DKC_EXTERN void WINAPI | dkcVernamEncrypt (BYTE *buffer, size_t size, const BYTE *key, size_t keysize, ULONG seed, DKC_VERNAM_F_TYPE ff)
DKC_EXTERN void WINAPI | dkcEasyVernamEncrypt (BYTE *buffer, size_t size, ULONG seed, DKC_VERNAM_F_TYPE ff)

## 説明

単純な Varnam 暗号

作者:
  d金魚

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

## マクロ定義

#define dkcEasyVernamDecrypt | ( | buffer,
|  | size,
|  | seed,
|  | ff |  | ) | dkcEasyVernamEncrypt(buffer,size,seed,ff)

| 参照: dkcEasyVernamEncrypt dkcVernam.h の 53 行で定義されています。

#define dkcVernamDecrypt | ( | buffer,
|  | size,
|  | key,
|  | keysize,
|  | seed,
|  | ff |  | ) | dkcVernamEncrypt(buffer,size,key,keysize,seed,ff)

  | 引数:
  | buffer[in][out] | 復号化するバッファへのポインタ（複合化後のデータが格納される。
  | size[in] | bufferのサイズ
  | key[in] | キーバッファへのポインタ
  | keysize[in] | キーバッファのサイズ
  | seed[in] | 種値
  | ff[in] | DKC_VERNAM_F_TYPE型の関数へのポインタ
dkcVernam.h の 38 行で定義されています。

## 型定義

typedef int(WINAPIV * DKC_VERNAM_F_TYPE)(ULONG *, ULONG)

| VERNAM暗号用ランダムコールバック dkcVernam.h の 17 行で定義されています。

## 関数

DKC_EXTERN void WINAPI dkcEasyVernamEncrypt | ( | BYTE * | buffer,
|  | size_t | size,
|  | ULONG | seed,
|  | DKC_VERNAM_F_TYPE | ff
| ) |

  | 引数:
  | buffer[in][out] | 復号化するバッファへのポインタ（複合化後のデータが格納される。
  | size[in] | bufferのサイズ
  | seed[in] | 種値
  | ff[in] | DKC_VERNAM_F_TYPE型の関数へのポインタ
覚え書き: キーに直接乱数値を使います。（正統派バーナム暗号？ dkcVernam.c の 70 行で定義されています。 参照先 BYTE, dkcRandomV(), と NULL.
    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 }

DKC_EXTERN void WINAPI dkcVernamEncrypt | ( | BYTE * | buffer,
|  | size_t | size,
|  | const BYTE * | key,
|  | size_t | keysize,
|  | ULONG | seed,
|  | DKC_VERNAM_F_TYPE | ff
| ) |

  | 引数:
  | buffer[in][out] | 暗号化するバッファへのポインタ（暗号化後のデータが格納される。
  | size[in] | bufferのサイズ
  | key[in] | キーバッファへのポインタ
  | keysize[in] | キーバッファのサイズ
  | seed[in] | 種値
  | ff[in] | DKC_VERNAM_F_TYPE型の関数へのポインタ
覚え書き: あらかじめ用意していた乱数列（key)から1バイト単位、ff関数の乱数値に従ってランダムに選んで暗号化します。 dkcVernam.c の 19 行で定義されています。 参照先 dkcRandomV(), と NULL.
    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 }