JunkBox_Lib  1.10.2
cipher.h File Reference

暗号用ライブラリヘッダ More...

#include "buffer.h"
Include dependency graph for cipher.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define _XOPEN_SOURCE
 

Functions

void setkey_byBase64 (Buffer)
 
void setkey_byBuffer (Buffer)
 
Buffer encrypt_Base64 (Buffer, int)
 
Buffer encrypt_Buffer (Buffer, int)
 
Buffer to_bin64 (Buffer)
 
Buffer from_bin64 (Buffer)
 
void dump_bin64 (char *, Buffer)
 

Detailed Description

Author
Fumi.Iseki (C)

Definition in file cipher.h.

Macro Definition Documentation

◆ _XOPEN_SOURCE

#define _XOPEN_SOURCE

Definition at line 26 of file cipher.h.

Function Documentation

◆ dump_bin64()

void dump_bin64 ( char *  format,
Buffer  str 
)

void dump_bin64(char* format, Buffer str)

bin64形式を標準エラー出力に表示する.

Parameters
formatbin64の内容を表示する前に表示するタイトル.
str表示する bin64形式のバイト列

Definition at line 164 of file cipher.c.

165 {
166  int i;
167 
168  fprintf(stderr, format);
169  for (i=0; i<str.vldsz; i++) fprintf(stderr, "%1d", str.buf[i]);
170  fprintf(stderr, "\n");
171 }
int vldsz
データの長さ.バイナリデータの場合も使用可能.文字列の場合は 0x00 を含まない.
Definition: buffer.h:37
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.
Definition: buffer.h:39

References Buffer::buf, and Buffer::vldsz.

◆ encrypt_Base64()

Buffer encrypt_Base64 ( Buffer  buf,
int  mode 
)

Buffer encrypt_Base64(Buffer buf, int mode)

文字列の暗号化または復号を行う

暗号化または復号される文字列はBase64でエンコードされている. 内部では一旦 Base64からデコードされて処理がおこなわれ,再びエンコードされる.

この関数を呼ぶ前に, setkey_XXXX()関数で暗号化キーを設定しなければならない.

Parameters
buf暗号化または復号を行う Base64文字列.
mode0: 暗号化.1: 復号.
Returns
暗号化または復号された文字列.Base64でエンコードされる.

Definition at line 93 of file cipher.c.

94 {
95  Buffer dec, str, enc;
96 
98  str = encrypt_Buffer(dec, mode);
99  free_Buffer(&dec);
100 
101  enc = encode_base64_Buffer(str);
102  free_Buffer(&str);
103  return enc;
104 }
Buffer encode_base64_Buffer(Buffer buf)
バイナリデータ buf.bufの buf.vldszバイトを Base64にエンコード する
Definition: buffer.c:804
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Definition: buffer.c:128
Buffer decode_base64_Buffer(Buffer str)
strのバッファを Base64からデコードする
Definition: buffer.c:850
Buffer encrypt_Buffer(Buffer buf, int mode)
Definition: cipher.c:66
unsigned char ** buf
Definition: jpeg_tool.h:96
Definition: buffer.h:35

References buf, decode_base64_Buffer(), encode_base64_Buffer(), encrypt_Buffer(), and free_Buffer().

Here is the call graph for this function:

◆ encrypt_Buffer()

Buffer encrypt_Buffer ( Buffer  buf,
int  mode 
)

Buffer encrypt_Buffer(Buffer buf, int mode)

バイナリデータの暗号化または復号を行う. この関数を呼ぶ前に, setkey_XXXX()関数で暗号化キーを設定しなければならない.

Parameters
buf暗号化または復号を行うデータ.
mode0: 暗号化.1: 復号.
Returns
暗号化の場合は 暗号化されたデータ.
復号の場合は 復号されたデータ.

Definition at line 66 of file cipher.c.

67 {
68  Buffer str, cry;
69 
70  str = to_bin64(buf);
71  encrypt((char*)str.buf, mode);
72  cry = from_bin64(str);
73  free_Buffer(&str);
74  return cry;
75 }
Buffer from_bin64(Buffer str)
Definition: cipher.c:139
Buffer to_bin64(Buffer str)
Definition: cipher.c:116

References buf, Buffer::buf, free_Buffer(), from_bin64(), and to_bin64().

Referenced by encrypt_Base64().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ from_bin64()

Buffer from_bin64 ( Buffer  str)

Buffer from_bin64(Buffer str)

0,1のバイト列(64Byte, bin64形式)を 8byteのビット列に変換する.

Parameters
strビット列に変換するバイト列.64Byte. bin64形式.
Returns
変換されたビット列.8Byte. 64bit.

Definition at line 139 of file cipher.c.

140 {
141  int i;
142  Buffer ret;
143 
144  ret = init_Buffer();
145  if (str.vldsz!=64) return ret;
146 
147  ret = make_Buffer(8);
148  if (ret.buf==NULL) return ret;
149 
150  for (i=0; i<64; i++) setBit(ret.buf, i, (int)str.buf[i]);
151  ret.vldsz = 8;
152  return ret;
153 }
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
Definition: buffer.c:71
Buffer init_Buffer()
初期化したBuffer型変数を返す.
Definition: buffer.c:47
#define setBit(x, n, i)
Definition: common.h:259

References Buffer::buf, init_Buffer(), make_Buffer(), setBit, and Buffer::vldsz.

Referenced by encrypt_Buffer().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setkey_byBase64()

void setkey_byBase64 ( Buffer  key)

void setkey_byBase64(Buffer key)

Base64によってエンコードされた文字列をデコードし,それを encrypt関数の暗号化キーとして設定する.
キー長は通常 8Byte(64bit)だが,有効なものは最初の7Byte(56bit)である.

Parameters
key暗号化のキー

Definition at line 20 of file cipher.c.

21 {
22  Buffer tmpkey, deskey;
23 
24  tmpkey = decode_base64_Buffer(key);
25  deskey = to_bin64(tmpkey);
26 
27  setkey((const char*)deskey.buf);
28  free_Buffer(&tmpkey);
29  free_Buffer(&deskey);
30  return;
31 }

References Buffer::buf, decode_base64_Buffer(), free_Buffer(), and to_bin64().

Here is the call graph for this function:

◆ setkey_byBuffer()

void setkey_byBuffer ( Buffer  key)

void setkey_byBuffer(Buffer key)

アスキー文字(8Byte)を用いて,encrypt関数の暗号化キーを設定する. ただし,キーとして有もなものは最初の7Byteである.

Parameters
key暗号化のキー

Definition at line 42 of file cipher.c.

43 {
44  Buffer deskey;
45 
46  deskey = to_bin64(key);
47  setkey((const char*)deskey.buf);
48  free_Buffer(&deskey);
49 
50  return;
51 }

References Buffer::buf, free_Buffer(), and to_bin64().

Here is the call graph for this function:

◆ to_bin64()

Buffer to_bin64 ( Buffer  str)

Buffer to_bin64(Buffer str)

Bit列を 0,1のバイト列(64Byte)に変換する (bin64形式に件関する).
例えば、整数の 2は 0,0,0,0,0,.....,0,1,0 のバイト列(64Byte)になる.

Parameters
strバイト列に変換するビット列.
Returns
変換されたバイト列.1バイトの 0,1の列.bin64形式.

Definition at line 116 of file cipher.c.

117 {
118  int i, mi;
119  Buffer ret;
120 
121  ret = make_Buffer(64);
122  if (ret.buf==NULL) return ret;
123 
124  mi = Min(64, str.vldsz*8);
125  for (i=0; i<mi; i++) ret.buf[i] = (uByte)getBit(str.buf, i);
126  ret.vldsz = mi;
127  return ret;
128 }
#define Min(x, y)
Definition: common.h:250
unsigned char uByte
1Byte
Definition: common.h:332
#define getBit(x, n)
Definition: common.h:258

References Buffer::buf, getBit, make_Buffer(), Min, and Buffer::vldsz.

Referenced by encrypt_Buffer(), setkey_byBase64(), and setkey_byBuffer().

Here is the call graph for this function:
Here is the caller graph for this function: