国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

自解密的加密程序的制作

2019-11-17 05:27:44
字體:
供稿:網(wǎng)友
    為了保證自己的數(shù)據(jù)不被別人非法地竊取,有必要對數(shù)據(jù)文件進行適當(dāng)?shù)丶用堋1境绦虿扇∫欢ǖ乃惴ǎ瑢γ艽a和數(shù)據(jù)進行加密,生成一個自解密的EXE文件。這個自解密文件是由兩部分組成的。第一部分為可執(zhí)行代碼部分,其作用是對密碼進行判定,對數(shù)據(jù)進行解密;后一部分是被加過密的密碼和數(shù)據(jù)。
   本程序分兩個模塊進行編寫。第一個是main.c,它是用來進行加密,產(chǎn)生EXE文件的;第二個是main2.c,它是用來解密的。分別對它們進行編譯生成main.exe和main2.exe,再對其進行合并即可。
   合并方法如下:
   COPY /B main.EXE+main2.EXE Key.EXE(注重main.EXET和main2.EXE的順序)
   使用時請按下列格式鍵入。
   Key〈欲加密文件〉〈產(chǎn)生后的EXE文件名〉
   按提示輸入密碼后將生成指定的可執(zhí)行文件。解密時運行這個可執(zhí)行文件。輸入密碼后(若輸入三次都不正確,將退出解密程序),即把原文件內(nèi)容還原到你指定的文件中。解密程序格式如下。
   可執(zhí)行文件名 (filename)
   源程序如下:
   第一個源代碼文件 main.c
   #include “stdio.h”
   main (int argc,char *argv[])
   {FILE *fp0, *fp1, *fp2;
   char ch,*passWord,i,str[10];password=str;
   if(argc!=3)
   {   exit(0);
   }
   if((fp0=fopen(argv[0],“rb"))=NULL)
   {printf(“can`t open %s",argv[0]);
   exit(0)
   }
   if((fp1=fopen(argv[1],“r"))=NULL)
   {printf(“can`t open %s")argv[1]);
   exit(0);
   }
   if((fp2=fopen(argv[2],“wb"))=NULL)
   {printf(“can`t open %s",argv[2]);
   }
   password=(char *)getpass(“please input password:");
   fseek(fp0,1394OL,SEEK_SET);/* 13940是main.exe文件的長度,不同的工作環(huán)境會有不同的值。請以實際長度加以修改 */
   while(!feOf(fp0))
   fputc(fgetc(fp0),fp2);/*把main2.exe輸入fp2指定的文件中*/
   for(i=0;password[i]!=`10`;i++)
   {fputc((i+password[i])&i,fp2);/*將密碼加密后寫入文件*/
   }
   fputc(`10`,fp2), /*將“10”放入密碼后 */
   do{
   {for(i=0;password[i]!=`10`,i++
   {ch=fgetc(fp1) /*從欲加密文件讀一個字符*/
   if(feof(fp1))break;
   ch=ch&password[i];
   ch+=i;
   ch=nch; /*將此字符同密碼i值進行運算后寫入fp2指定文件*/
   fputc(ch,fp2);
   }
   }While(!feof(fp1));
   fcloseal(c);
   }
   第二個源代碼文件main2.c
   #include “stdio.h"
   #include “string.h"
   main(int argc,char *argv[])
   {FILE *FP0,*FP1;
   char *password,old password[10],str[10],ch,i;
   if(argc!=2)
   {printf(“Usage=%s",argv[0]);
   exit(o);
   }
   fseek(fp0,16888L,SEEK_SET); /*同理16888也視實際情況而定*/
   fgetc(fp0); /*讀掉一個無效字符*/
   for(i=0;(oldpassword[i]=fget((fp0))!=`10`;i++)
   Oldpassword[i]=(oldpassword[i]&i)-i; /*對密碼進行還原*/
   oldpassword[i]=`10`; /*把“10”藏于密碼后 */
   password=(char *)getpass(“please input password:");

   for(i=0;i  {if(strcmp(password,oldpassword))
   {password=(ch *)getpass(“
password is wrong.
please input agai:");
   if(i==2)
   {printf(“
press any Key to exit……
");
   getch();exit(o)
   }
   }
   }/*對密碼進行判定,有三次機會,都不正確則返回到
操作系統(tǒng)*/
   do{
   for (i=0;password[i]!=`10`;i++)
   {ch=fgetc(fp0);
   if(feof(fp0))break;
   ch=nch;
   ch-=i;
   ch&=password[i];
   }
   }while(!feof(fp0);
   fcloseal(c);
   {
   上述程序在COMPAQ 586.TC2.0集成環(huán)境里通過。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 虞城县| 特克斯县| 梅州市| 山阴县| 华阴市| 新营市| 永胜县| 铁岭市| 红安县| 西和县| 酉阳| 怀柔区| 抚松县| 长宁区| 庆安县| 杨浦区| 兴安县| 鹤岗市| 哈密市| 台江县| 连城县| 合水县| 阳信县| 马尔康县| 晋宁县| 常德市| 临西县| 米脂县| 南投市| 长子县| 抚顺县| 浦江县| 贞丰县| 黄浦区| 同心县| 通榆县| 清徐县| 威宁| 克拉玛依市| 谢通门县| 南昌县|