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

📄 lc_bcb_98.html

📁 C++ Builder学习中文版,让学者对其有一定的理解.
💻 HTML
字号:


<HTML><HEAD>

<TITLE>自解密的加密程序的制作</TITLE>

<META content="text/html; charset=gb2312" http-equiv=Content-Type>

<META content="Microsoft FrontPage 4.0" name=GENERATOR>

<META content=FrontPage.Editor.Document name=ProgId></HEAD>

<BODY>

          <P align=center><b>自解密的加密程序的制作</b><BR><BR>(浙江 吴善磊)   

      <P><BR><BR>  为了保证自己的数据不被别人非法地窃取,有必要对数据文件进行适当地加密。本程序采取一定的算法,对密码和数据进行加密,生成一个自解密的EXE文件。这个自解密文件是由两部分组成的。第一部分为可执行代码部分,其作用是对密码进行判断,对数据进行解密;后一部分是被加过密的密码和数据。<BR>  本程序分两个模块进行编写。第一个是main.c,它是用来进行加密,产生EXE文件的;第二个是main2.c,它是用来解密的。分别对它们进行编译生成main.exe和main2.exe,再对其进行合并即可。<BR>  合并方法如下:<BR>  COPY   

      /B main.EXE+main2.EXE   

      Key.EXE(注意main.EXET和main2.EXE的顺序)<BR>  使用时请按下列格式键入。<BR>  Key〈欲加密文件〉〈产生后的EXE文件名〉<BR>  按提示输入密码后将生成指定的可执行文件。解密时运行这个可执行文件。输入密码后(若输入三次都不正确,将退出解密程序),即把原文件内容还原到你指定的文件中。解密程序格式如下。<BR>  可执行文件名   

      (filename)<BR>  源程序如下:<BR>  第一个源代码文件 main.c<BR>  #include   

      “stdio.h”<BR>  main (int argc,char *argv[])<BR>  {FILE *fp0, *fp1,   

      *fp2;<BR>  char   

      ch,*password,i,str[10];password=str;<BR>  if(argc!=3)<BR>  {printf(“usage:key   

      ");<BR>  exit(0);<BR>  }<BR>  if((fp0=fopen(argv[0],“rb"))=NULL)<BR>  {printf(“can`t   

      open   

      %s",argv[0]);<BR>  exit(0)<BR>  }<BR>  if((fp1=fopen(argv[1],“r"))=NULL)<BR>  {printf(“can`t   

      open   

      %s")argv[1]);<BR>  exit(0);<BR>  }<BR>  if((fp2=fopen(argv[2],“wb"))=NULL)<BR>  {printf(“can`t   

      open %s",argv[2]);<BR>  }<BR>  password=(char *)getpass(“please input   

      password:");<BR>  fseek(fp0,1394OL,SEEK_SET);/*   

      13940是main.exe文件的长度,不同的工作环境会有不同的值。请以实际长度加以修改   

      */<BR>  while(!feOf(fp0))<BR>  fputc(fgetc(fp0),fp2);/*把main2.exe输入fp2指定的文件中*/<BR>  for(i=0;password[i]!=`10`;i++)<BR>  {fputc((i+password[i])&amp;i,fp2);/*将密码加密后写入文件*/<BR>  }<BR>  fputc(`10`,fp2),   

      /*将“10”放入密码后   

      */<BR>  do{<BR>  {for(i=0;password[i]!=`10`,i++<BR>  {ch=fgetc(fp1)   

      /*从欲加密文件读一个字符*/<BR>  if(feof(fp1))break;<BR>  ch=ch&amp;password[i];<BR>  ch+=i;<BR>  ch=nch;   

      /*将此字符同密码i值进行运算后写入fp2指定文件*/<BR>  fputc(ch,fp2);<BR>  }<BR>  }While(!feof(fp1));<BR>  fcloseal(c);<BR>  }<BR>  第二个源代码文件main2.c<BR>  #include   

      “stdio.h"<BR>  #include “string.h"<BR>  main(int argc,char   

      *argv[])<BR>  {FILE *FP0,*FP1;<BR>  char *password,old   

      password[10],str[10],ch,i;<BR>  if(argc!=2)<BR>  {printf(“Usage=%s",argv[0]);<BR>  exit(o);<BR>  }<BR>  fseek(fp0,16888L,SEEK_SET);   

      /*同理16888也视实际情况而定*/<BR>  fgetc(fp0);   

      /*读掉一个无效字符*/<BR>  for(i=0;(oldpassword[i]=fget((fp0))!=`10`;i++)<BR>  Oldpassword[i]=(oldpassword[i]&amp;i)-i;   

      /*对密码进行还原*/<BR>  oldpassword[i]=`10`; /*把“10”藏于密码后 */<BR>  password=(char   

      *)getpass(“please input   

      password:");<BR>  for(i=0;i  {if(strcmp(password,oldpassword))<BR>  {password=(ch   

      *)getpass(“<BR>password is wrong.&nbsp;<BR>please input   

      agai:");<BR>  if(i==2)<BR>  {printf(“<BR>press any Key to   

      exit……<BR>");<BR>  getch();exit(o)<BR>  }<BR>  }<BR>  }/*对密码进行判断,有三次机会,都不正确则返回到操作系统*/<BR>  do{<BR>  for   

      (i=0;password[i]!=`10`;i++)<BR>  {ch=fgetc(fp0);<BR>  if(feof(fp0))break;<BR>  ch=nch;<BR>  ch-=i;<BR>  ch&amp;=password[i];<BR>  }<BR>  }while(!feof(fp0);<BR>  fcloseal(c);<BR>  {<BR>  上述程序在COMPAQ   

      586.TC2.0集成环境里通过。 </P></BODY></HTML>  

⌨️ 快捷键说明

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