⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fes.c

📁 一款文件加密的小软件
💻 C
字号:
/***
 *    Copyrights(c)2004, SuperStar STUDIO.
 *    All rights reserved.
 *
 *    文件名称:  fes.txt(包括files\common.h, fes.h, window.h, def.h, smartea.h)
 *    当前版本:  1.0
 *    完成日期:  2004-2
 *    作    者:  星星
 *
 *    取代版本:  none
 *    完成日期:  none
 *    作    者:  none
 *
 *    摘要:
 *        该算法根据密钥长度进行不同轮数的迭代。128/192/256bits长的密钥分别对应
 *    6,9,12轮迭代。算法总体结构为Feistel网络结构.关于算法的详细资料请参阅文档
 *    --《SEA--一种新的分组密码算法.doc》。
 ***/

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
#include <dos.h>
#include <dir.h>
#include <fcntl.h>
#include <io.h>
#include <mem.h>
#include <sys\stat.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include "FileES\def.h"
#include "FileES\fes.h"
#include "FileES\common.h"
#include "FileES\window.h"
#include "FileES\smartea.h"


/**
 *  BOOL Login(void);
 *  - 登录本系统,成功返回TRUE,反之返回FALSE
 *  - 本函数中使用全局变量
 *    - login(type: WINDOWHANDLE)
 **/

BOOL
Login(void)
{
    char str[LOGINKEYLENGTH+1];

RELOGIN:
    login.retStrLen = LOGINKEYLENGTH;
    if (FALSE == Window(&login))
    {
        FreeWindow(&login);
        return FALSE;
    }
    CopyTo(str, login.retStr, login.retStrLen);
    str[login.retStrLen] = '\0';
    FreeWindow(&login);

    if(0 == strcmp(str, "superstar"))          /* 登录密码比对 */
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

/**
 *  - 主函数
 *  - 本函数中使用全局变量
 *    - key(type: KEYINFO)
 *    - message(type: WINDOWHANDLE)
 *    - funPanel(type: WINDOWHANDLE)
 *    - encryptItem(type: WINDOWHANDLE)
 *    - decryptItem(type: WINDOWHANDLE)
 *    - exitItem(type: WINDOWHANDLE)
 *    - bakGround(type: WINDOWHANDLE)
 **/

void
main(void)
{
    int  i;
    char ch;
    BOOL breakFlag;
    WINDOWHANDLE *pPanel_Fun[4];                /* 功能选择菜单的窗体参数 */

    textmode(0x80);                             /* 设置文本模式 */
    textbackground(0);
    clrscr();

    Window(&bakGround);                         /* 工作背景 */

    for (i=0; i<3; i++)                         /* 3次登录机会 */
    {
        if (TRUE == Login()) break;
    }
    if (3 == i) return;                         /* 如果3次登录均失败,则退出本系统 */


    while (1)
    {
        /* 菜单选择 */
        pPanel_Fun[0] = &funPanel;
        pPanel_Fun[1] = &encryptItem;
        pPanel_Fun[2] = &decryptItem;
        pPanel_Fun[3] = &exitItem;
        i = Panel(pPanel_Fun, 4);

        switch (i)
        {
        case  0: key.flag = ENCRYPT;             /* 加密 */
                 SysMainFun();
                 break;
        case  1: key.flag = DECRYPT;             /* 解密 */
                 SysMainFun();
                 break;
        case  2:                                 /* 退出 */ 
        case -1:
                 strcpy(message.displayStr, "[!]\n\n Are you sure to EXIT?(y/n) \n");
                 Message(&message);
                 breakFlag = 0;
                 while (!breakFlag)
                 {
                     ch = getch();
                     if ('y' == ch || 'Y' == ch)
                     {
                         FreeMessage(&message);
                         return;
                     }
                     else if ('n' == ch || 'N' == ch)
                     {
                         FreeMessage(&message);
                         breakFlag = 1;
                     }
                 }
                 break;
        default: break;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -