国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 禄丰县| 桦川县| 宿州市| 东港市| 元朗区| 三原县| 福鼎市| 辉南县| 双桥区| 易门县| 榆林市| 老河口市| 特克斯县| 沅陵县| 济阳县| 汶上县| 阿尔山市| 安乡县| 铁岭市| 丹棱县| 阳曲县| 万宁市| 黎平县| 白城市| 庆云县| 通山县| 尉氏县| 郑州市| 进贤县| 泰顺县| 花莲市| 四川省| 大田县| 临沭县| 怀远县| 略阳县| 杭锦旗| 运城市| 佳木斯市| 淄博市| 黑河市|