📄 def.h
字号:
/* def.h
* Copyright (c) starsStudio. 2004
* All Rights Reserved.
*/
typedef unsigned char BOOL; /* 类型宏替换 */
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef int FILEHANDLE;
#define ROUNDMIN 6 /* 加密轮数,分别对应三种长度的密钥
* 要求轮数至少比-(密钥长度/8)大 */
#define ROUNDMED 9
#define ROUNDMAX 12
#define ALLFILES FA_RDONLY|FA_DIREC \
|FA_HIDDEN|FA_SYSTEM \
|FA_ARCH /* 设定找寻所有文件 */
#define TRUE 1
#define FALSE 0
#define KEY_DOWN 0x5000 /* 几个功能键的扩展扫描码值 */
#define KEY_UP 0x4800
#define KEY_LEFT 0x4b00
#define KEY_RIGHT 0x4d00
#define KEY_BACKSPACE 0x0e08
#define KEY_ENTER 0x1c0d
#define KEY_ESC 0x011b
/* 加解密标记 */
#define ENCRYPT 1
#define DECRYPT 0
#define LOGINKEYLENGTH 16 /* 登录密钥最大长度 */
#define FILENAMELENGTH 16 /* 文件名最大长度 */
/* 窗体属性值 */
#define DOUBLELINE 0
#define SINGLELINE 1
#define NORET 0
#define RET 1
#define NONPOP 0
#define POP 1
#define NONPLAIN 0
#define PLAIN 1
/* 文件列表菜单返回属性值 */
#define ISFILE 0
#define ISDIR 1
#define ISPAGEUP 2
#define ISPAGEDOWN 3
#define ISRETURN 4
#define MAXFILENUMS 28 /* 文件列表中最多可显示的文件条目数最好不
* 要随意修改该值,不过修改时比28小也可 */
#define SIZE 16834 /* 一次可从文件中读取的字节数(16K)。该值
* 越大,加解密速度越快。但如果出现空间不
* 够的提示,则需要修改此值,比如8192(8K)
* 4096(4K)等 */
typedef struct tagKey{
int flag; /* flag为ENCRYPT时表示加密,为DECRYPT时表示解密 */
int keyType; /* 密钥类型(指密钥长度) */
BYTE *seedKey; /* 用户密钥首址 */
BYTE *childKey; /* 轮子密钥首址 */
BYTE kw0[16]; /* 白化子密钥(两个16字节) */
BYTE kw1[16];
}KEYINFO; /* 密钥信息结构 */
typedef struct tagFileAttrib{
int flag; /* flag为0时表示为文件;为1时表示目录;flag
* 为2时表示向上翻页,flag为3时表示向下翻页
* flag为4时表示返回上一级目录 */
char fnStr[13]; /* 文件名 */
}FILEATTRIB; /* 文件属性结构 */
typedef struct tagWindow{
int left; /* 窗体左上角横坐标 */
int top; /* 窗体左上角纵坐标 */
int width; /* 窗体宽 */
int height; /* 窗体高 */
int fillColor; /* 窗体背景填充色 */
int fontColor; /* 窗体中字体颜色 */
int lineColor; /* 窗体线条颜色 */
int bakColor; /* 窗体边框底色 */
int lineStyle; /* 窗体线条类型 */
BYTE displayStr[256]; /* 窗体中显示的字符串首址 */
BYTE title[32]; /* 窗体名称 */
int curx; /* 窗体绘成后光标初始位置的横坐标(相对坐标) */
int cury; /* 窗体绘成后光标初始位置的纵坐标(相对坐标) */
int retFlag; /* 窗体有返回值的标记 */
int plainFlag; /* 向窗体输入字符时,是否显示真实值 */
char *retStr; /* 窗体返回值(字符串)的首址 */
int retStrLen; /* 限制窗体返回字符串的长度 */
int popFlag; /* 如果当前窗体是弹出型窗体 */
char *bufWindow; /* 储存被窗体覆盖的信息单元首址 */
}WINDOWHANDLE; /* 窗体信息结构 */
WINDOWHANDLE login = { /* 登录窗体的相关属性值 */
26, 10, 30, 6,
BLACK, WHITE, BLACK, WHITE,
DOUBLELINE,
" FILE ENCRYPTION SYSTEM \n <USE SEA> \n============================\nPassword:",
" Login... ",
10, 4,
RET, NONPLAIN,
NULL,
8,
POP, NULL
};
WINDOWHANDLE bakGround = { /* 背景窗体的相关属性值 */
2, 2, 78, 23,
BLACK, WHITE, BLACK, WHITE,
DOUBLELINE,
"\n\n *>> FILE ENCRYPTION SYSTEM <<*\n - USE SEA(Smart Encryption Algorithm) -",
"",
1, 4,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE funPanel = { /* 功能选择面板(窗体)的相关属性值 */
13, 8, 56, 15,
BLACK, WHITE, BLACK, WHITE,
DOUBLELINE,
"",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE encryptItem = { /* 加密功能项菜单的相关属性值 */
28, 10, 26, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" ENCRPTION",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE decryptItem = { /* 解密功能项菜单的相关属性值 */
28, 14, 26, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" DECRPTION",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE exitItem = { /* 退出功能项菜单的相关属性值 */
28, 18, 26, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" EXIT",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE keyPanel = { /* 密钥长度选择面板(窗体)的相关属性值 */
15, 9, 30, 11,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
"",
"[Choose Key Length]",
1, 1,
NORET, PLAIN,
NULL,
0,
POP, NULL
};
WINDOWHANDLE key128Item = { /* 128bits长度密钥菜单项的相关属性值 */
20, 10, 20, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" 16Bytes, 128Bits ",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE key192Item = { /* 192bits长度密钥菜单项的相关属性值 */
20, 13, 20, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" 24Bytes, 192Bits ",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE key256Item = { /* 256bits长度密钥菜单项的相关属性值 */
20, 16, 20, 3,
BLACK, WHITE, WHITE, BLACK,
DOUBLELINE,
" 32Bytes, 256Bits ",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
NONPOP, NULL
};
WINDOWHANDLE filePath = { /* 文件路径名输入框的相关属性值 */
21, 13, 40, 5,
BLACK, WHITE, BLACK, WHITE,
SINGLELINE,
"[i] File path...\n======================================\n>",
"",
2, 3,
RET, PLAIN,
NULL,
0,
POP, NULL
};
WINDOWHANDLE fileList = { /* 文件列表框的相关属性值 */
40-(MAXDIR+2)/2+1, 10, MAXDIR+2, 11,
WHITE, BLACK, BLACK, WHITE,
SINGLELINE,
"",
"",
1, 1,
NORET, PLAIN,
NULL,
0,
POP, NULL
};
WINDOWHANDLE keyInput = { /* 密钥输入框的相关属性值 */
23, 13, 36, 5,
BLACK, WHITE, BLACK, WHITE,
DOUBLELINE,
"[i] User Key...\n==================================\n>",
"",
2, 3,
RET, PLAIN,
NULL,
0,
POP, NULL
};
WINDOWHANDLE message = { /* 消息框的相关属性值 */
0, 13, 0, 6,
BLACK, WHITE, BLACK, WHITE,
DOUBLELINE,
"",
"[Message]",
1, 1,
NORET, PLAIN,
NULL,
0,
POP, NULL
};
extern BOOL Login(void); /* 登录本软件系统 */
extern void SysMainFun(void); /* 系统主函数 */
extern void SeaENDE(FILEHANDLE *srcFilehandle,
FILEHANDLE *dstFileHandle); /* 加密或解密给定文件句柄号的文件
* 调用Encrypt()或Decrypt() */
extern void Encrypt(FILEHANDLE *srcFilehandle, /* 加密给定文件句柄号的文件 */
FILEHANDLE *dstFileHandle);
extern void Decrypt(FILEHANDLE *srcFilehandle, /* 解密给定文件句柄号的文件 */
FILEHANDLE *dstFileHandle);
extern BOOL GetFileHandle(FILEHANDLE *srcFilehandle, /* 获取源文件和目标文件的句柄号 */
FILEHANDLE *dstFileHandle);
extern int ViewFiles(FILEATTRIB fnAttrib[24], /* 列出当前搜索到的文件,并返回列表中的选择项 */
int fileNums);
extern int PassPages(int p); /* 将当前目录下的文件列表翻过p页 */
extern BOOL GetFilePath(void); /* 取得文件路径 */
extern BOOL CheckExist(char *pathName); /* 检测当前目录下是否存在某个文件 */
extern void FileENDE(void); /* 文件加密或解密 */
extern void SEA (BYTE* data, KEYINFO *ck); /* 用密钥ck加密或解密data数组 */
extern void Brown(BYTE* data);
extern void Feistel(BYTE* data, KEYINFO *ck);
extern BOOL Key (KEYINFO *ck); /* 得到种子密钥并扩展出子密钥。调
* 用AskKeys(),ExpandKeys() */
extern BOOL AskKeys (KEYINFO *ck); /* 要求输入用户密钥 */
extern BOOL ExpandKeys(KEYINFO *ck); /* 扩展出轮子密钥和白化子密钥 */
extern void FreeKey (KEYINFO *ck); /* 释放密钥申请的堆空间 */
extern void Frame (WINDOWHANDLE *tmpWin); /* 绘制窗体,由Window()和Message()调用 */
extern BOOL Window (WINDOWHANDLE *tmpWin); /* 绘制窗体并根据设定等待输入 */
extern void FreeWindow (WINDOWHANDLE *tmpWin); /* 释放弹出型窗体和有返回值窗体申请的堆空间 */
extern BOOL Message (WINDOWHANDLE *tmpMsg); /* 显示消息 */
extern void FreeMessage(WINDOWHANDLE *tmpMsg); /* 释放弹出型消息窗体申请的堆空间 */
extern int Panel(WINDOWHANDLE **pPanel, int num); /* 面板显示并返回面板上选择的菜单项 */
extern WORD GetKey(void); /* 检测键盘按键并返回按键的扩展扫描码 */
extern void Beeper(long delayTime);
extern void CopyTo(char *strDst, /* 指定长度的字符数组拷贝 */
char *strSrc, int length);
extern void ToLower(char *str); /* 将str中的大写字母转换为小写字母 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -