JunkBox_Lib  1.10.2
cipher.c
Go to the documentation of this file.
1 
9 #include "cipher.h"
10 
11 
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 }
32 
33 
43 {
44  Buffer deskey;
45 
46  deskey = to_bin64(key);
47  setkey((const char*)deskey.buf);
48  free_Buffer(&deskey);
49 
50  return;
51 }
52 
53 
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 }
76 
77 
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 }
105 
106 
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 }
129 
130 
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 }
154 
155 
164 void dump_bin64(char* format, Buffer str)
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 }
172 
Buffer encode_base64_Buffer(Buffer buf)
バイナリデータ buf.bufの buf.vldszバイトを Base64にエンコード する
Definition: buffer.c:804
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
Definition: buffer.c:71
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Definition: buffer.c:128
Buffer init_Buffer()
初期化したBuffer型変数を返す.
Definition: buffer.c:47
Buffer decode_base64_Buffer(Buffer str)
strのバッファを Base64からデコードする
Definition: buffer.c:850
void setkey_byBuffer(Buffer key)
Definition: cipher.c:42
Buffer from_bin64(Buffer str)
Definition: cipher.c:139
Buffer to_bin64(Buffer str)
Definition: cipher.c:116
void setkey_byBase64(Buffer key)
Definition: cipher.c:20
Buffer encrypt_Base64(Buffer buf, int mode)
Definition: cipher.c:93
Buffer encrypt_Buffer(Buffer buf, int mode)
Definition: cipher.c:66
void dump_bin64(char *format, Buffer str)
Definition: cipher.c:164
暗号用ライブラリヘッダ
#define Min(x, y)
Definition: common.h:250
#define setBit(x, n, i)
Definition: common.h:259
unsigned char uByte
1Byte
Definition: common.h:332
#define getBit(x, n)
Definition: common.h:258
unsigned char ** buf
Definition: jpeg_tool.h:96
Definition: buffer.h:35
int vldsz
データの長さ.バイナリデータの場合も使用可能.文字列の場合は 0x00 を含まない.
Definition: buffer.h:37
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.
Definition: buffer.h:39