正文

文件加密器2007-03-20 10:27:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/24117.html

分享到:

加密器说明                          点击下载原码 概    序:  常常有一些重要的信息需要记录,这些信息我们       不希望别人知道,比如 QQ密码,邮箱密码,银行      帐号,重要算法的原代码,写给女朋友的情书等等。     有点安全意识的人都不会将所有的密码设成相同。     但是这么多的密码常常容易忘记,我就丢失了好     几个密码。就冲这点我应该为自己写一个,现在            终于出炉了,呵呵 …… 加密算法:  本程序对文件内容加密,首先由用户输入原始密码      然后通过 DES 算法(替换+排序) 将该密码转换为     128(可以更长) 位的 DES 密文,该密文放在加密后的     文件中,供解密时用,任何人可以看到该密文,但是     想要通过该密文获取原始密码那是不可能的 !然后     由原始密码和 DES 密文产生第一个加密因子passKey     passKey用作随机数种子产生一个数机数 temp 作为     第二个加密因子。将temp异或passKey后的结果存入     加密文件中。最后用 temp 和 passKey 加密文件 。           暴力破解:  只有暴力才能解密文件(我没想到其它方法)。     如果密码简单可能会容易被破,因此建议大家密码     尽量的长。加密原理已经公布,有兴趣大家可以尝试     去写一个。如果谁的重要资料被加密会遗失了密码     可以找我,不过写个暴力程序要收取报酬哦,呵呵 使用说明:  加密对象严格限制为文本文件,某些文件不可读     加密这样的文件程序便会崩溃。另外加密器提供了     备分程序建议不要关闭。备分器将文件备分在加密     器所在目录的 backup 子目录下,backup 目录下有     两个文件 BackFile.ini 记录相应文件所在的原始     目录,FileTimes.ini 记录该目录下的文件数目,主     要用于重命名文件,因为文件可能重名。 部分代码: ///////////////////////////////////////////////////////////////////////////////////  文 件: FileMain.c//  主函数////  作  者: 江南孤峰 //  联  系:QQ: 403324669   //  时  间: 2007--3--3///////////////////////////////////////////////////////////////////////////////// #include <stdio.h>#include <stdlib.h>#include <string.h>#include <direct.h>#include <io.h>#include <time.h>#include <conio.h>#include "FilePass.h" // 全局变量int iBackupProgram = ON;     // 备分器开关char strBackupDirect[_MAX_PATH] = {""}; // 存储备分目录,即加密器所在目录 // 显示功能菜单void ShowFunctionMenu(void){ printf("=========================== 功 能 菜 单 ===========================\n"); printf("%-36s%-36s\n"," 1: 手动加密单个文件",         " 2: 手动解密单个文件"); printf("%-36s%-36s\n"," 3: 自动加密当前目录里的所有文件",         " 4: 自动解密当前目录里的所有文件"); printf("%-36s%-36s\n"," 5: 递归加密指定目录下的所有文件",         " 6: 递归解密指定目录下的所有文件"); printf("%-36s%-36s\n"," 7: 自动加密我的电脑里的所有文件",         " 8: 自动解密我的电脑里的所有文件"); printf("%-36s%-36s\n"," 9: 修改加密器配制",         "10: 恢复被加密文件至原始位置"); printf("%-36s\n",     "11: 退出程序"); printf("====================================================================\n"); printf("选择你要执行的操作:");} // 主函数int main(void){ char strFileName[FILE_LENGTH+6] = {""}; char strAddFileSuffix[FILE_SUFFIX_LENGTH] = {".txt"}; char strFreeFileSuffix[FILE_SUFFIX_LENGTH] = {".pass"}; char    strDES[DES_LENGTH + 2] = {""};  char strPass[PASS_LENGTH + 2] = {""}; char strPartition[10] = {""};  int iUserCmd = 0; int iContinueFlag = TRUE; int iDrivers = 0; int count = 0; int nFileDealMethod = DELETE_PASS_SOURCE_FILE;  printf("********************************************************************\n"); printf("\t简 单 文 本 文 件 加 密 器 ( DOS版 )\n"); printf("\t作   者: 江 南 孤 峰 [ QQ:403324669 ]\n"); printf("\t时   间: 2007 -- 3 -- 7\n"); printf("********************************************************************\n");  _getcwd(strBackupDirect,_MAX_PATH); strcat(strBackupDirect,"\\backup"); CreateBackupDirectAndFile();  while(iContinueFlag == TRUE){  ShowMenu(strAddFileSuffix,strFreeFileSuffix,nFileDealMethod);  scanf("%d",&iUserCmd);  getchar();  if(iUserCmd < 9 && iUserCmd > 0){   if( (iUserCmd % 2) &&        (GetFilePassDES(strPass,strDES,ADD_PASS) == FAILED) )    continue;   else if( !(iUserCmd % 2) &&      (GetFilePassDES(strPass,strDES,FREE_PASS) == FAILED) )    continue;  }  switch(iUserCmd){   case 1: // 手动加密文件    printf("请输入欲加密的文件名:");    if( GetUserInputFileName(strFileName)==SUCCESS &&         AddPassForFile(         strFileName,         strAddFileSuffix,       strFreeFileSuffix,     strPass,        strDES            ) == SUCCESS     ){     printf("文件 %s 加密完成\n",strFileName);     MyDeleteFile(strFileName,nFileDealMethod,ADD_PASS);    }    else     printf("文件 %s 加密失败\n",strFileName);    break;   case 2: // 手动解密文件    printf("请输入欲解密的文件名:");    if( GetUserInputFileName(strFileName) == SUCCESS &&        FreePassForFile(     strFileName,     strFreeFileSuffix,     strPass,     strDES        ) == SUCCESS       ){     printf("文件 %s 解密完成\n",strFileName);     MyDeleteFile(strFileName,nFileDealMethod,FREE_PASS);    }    else     printf("文件 %s 解密失败\n",strFileName);    break;   case 3: // 自动加密当前目录里的所有文件    count = AutoAddPassForCurrentDirFile(     strAddFileSuffix,     strFreeFileSuffix,     nFileDealMethod,     strPass,     strDES    );    printf("\n共加密文件: %d \n",count);    break;   case 4: // 自动解密当前目录里的所有文件    count = AutoFreePassForCurrentDirFile(     strFreeFileSuffix,     nFileDealMethod,     strPass,     strDES    );    printf("\n共解密文件: %d \n",count);    break;   case 5:// 递归加密指定目录下的所有文件    if(ChangeCurrentDirect() == SUCCESS){       count = AutoAddPassForUserDefDirFile(      strAddFileSuffix,      strFreeFileSuffix,      nFileDealMethod,      strPass,      strDES     );     printf("\n共加密文件: %d \n",count);    }    break;   case 6:// 递归解密指定目录下的所有文件    if(ChangeCurrentDirect() == SUCCESS){        count = AutoFreePassForUserDefDirFile(      strFreeFileSuffix,      nFileDealMethod,      strPass,      strDES     );     printf("\n共解密文件: %d \n",count);    }    break;   case 7:// 加密我的电脑里的所有文件    if(iBackupProgram == OFF){     puts("备分器处于关闭状态,为了安全,请先打开备分器 !");     break;    }    count = AutoAddPassForAllFile(      strAddFileSuffix,      strFreeFileSuffix,      nFileDealMethod,      strPass,      strDES     );    printf("\n共加密文件: %d \n",count);    break;   case 8: // 解密我的电脑里的所有文件    count = AutoFreePassForAllFile(      strFreeFileSuffix,      nFileDealMethod,      strPass,      strDES     );    printf("\n共解密文件: %d \n",count);    break;   case  9: // 修改加密器的配制    UpdateProgramStation(     strAddFileSuffix,     strFreeFileSuffix,     &nFileDealMethod    );    break;   case 10: // 从备分目录中恢复被加密文件到原位置    GetBackFile(strAddFileSuffix,strFreeFileSuffix);    break;   case 11: // 结束程序    iContinueFlag = FALSE;    break;   default:    printf("\n错误:没有该选项 !\n");    break;  }  iUserCmd = -1; // 清除原输入  system("pause"); } return SUCCESS;}  

阅读(4102) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册