切换到宽版
  • 9606阅读
  • 4回复

“文字加密与解密”~~~~~~~~~~~~~~~~~~~~~~ [复制链接]

上一主题 下一主题
离线a2a2yk
 
只看楼主 倒序阅读 0 发表于: 2006-11-12
我编的文字加密与解密程序;
大家可以试一试;点评一下;
不知大家还有没有什么好的加密与解密算法~
拿出来大家分享一下拉~~
[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2]
/*
*For encrypt and decrypt
*Made by Yangkun;
*Copyright Yk;
*Don't use it with out my permission
*My email a2a2yk@163.com
/Date 2006.11.9 2:43
*/

#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>

FILE *fpr,*fpw;
char in[200],ch,out[200],fin[30]="d:\in.txt",fout[30]="d:\out.txt";
char setway;
int chose;

void cpyright()
{printf("******************En&Decrypt************************");
printf("\n*This program for encrypt and decrypt");
printf("\n*Made by Yangkun");
printf("\n*Copyright 2006~2007 Yk\n*Don't use it with out my permission\n*My email a2a2yk@163.com");
printf("\n****************************************************");
}

void decrypt(char *in,int j)
{int i;
for(i=0;i<j;i++)
  {if(*(in+i)>='A'&&*(in+i)<='Z') *(in+i)=*(in+i)+32;
  if(*(in+i)>='a'&&*(in+i)<='z') *(in+i)=*(in+i)+2;
  if(*(in+i)>'z'&&*(in+i)<='z'+2) *(in+i)=*(in+i)-26;
  printf("%c",*(in+i));
  }

}


void encrypt(char *in,int j)
{int i,k;
for(i=0;i<j;i++)
  {if(*(in+i)>='a'&&*(in+i)<='z') *(in+i)=*(in+i)-32;
  if(*(in+i)>='A'&&*(in+i)<='Z')             /*note: limit range of every char*/
    {*(in+i)=*(in+i)-2;
    if(*(in+i)>=('A'-2)&&*(in+i)<'A') *(in+i)=*(in+i)+26;
    k=random(2)+1;
    if(k==1&&*(in+i)>='A'&&*(in+i)<='Z'){*(in+i)=*(in+i)+32;}
    }
  printf("%c",*(in+i));

  }

}


void filemake()
{ int i=0;
  printf("\nDefaultFrom:d:\\in.txt\nDefaultTo:d:\\out.txt\nDo you want to change route?(Y/N): ");
  scanf("%c",&setway);
  if(setway=='Y'||setway=='y')
    {printf("From(way of date):");
    scanf("%s",fin);
    printf("To(way of date):");
    scanf("%s",fout);
    }

  fpr=fopen(fin,"rt");       /*note: don't use fpr=fopen("fin","rt");
                              but use fpr=fopen(fin,"rt");     */
  if(fpr==NULL){printf("error");getch();exit(1);}
  fpw=fopen(fout,"wt");
  if(fpw==NULL){printf("error");getch();exit(1);}

  ch=fgetc(fpr);
  while(ch!=EOF)
  {*(in+i)=ch;
    putchar(*(in+i));
    ch=fgetc(fpr);
    i++;
    }
  putchar('\n');

  strcpy(out,in);   /*use out so that it will not change the source information*/
  if(chose==1)decrypt(out,i);
  if(chose==2)encrypt(out,i);
  i=0;
  while(out!='\0')
    {fputc(out,fpw);
    i++;
    }
    printf("\nFinished");

}



int setsc()
{ int stf;
printf("\n       1.Type From Keyboard");
  printf("\n       2.Get from File\n");
  printf("       chose: ");
  scanf("%d",&stf);
  getchar();
  return(stf);


}
void getin()
{char che;
int i=0;
printf("\nEnter Words(Use # to end)");
che=getchar();
while(che!='#')
{*(in+i)=che;
che=getchar();
i++;
}

putchar('\n');
printf("Go on?");
i=0;
che=in;
while(che!='\0')   /*note use "!=" not "=="*/
{putchar(che);
  che=in;
  i++;
}
getch();
  printf("\nDefaultTo:d:\out.txt\nDo you want to change route?(Y/N): ");
    getchar();
    scanf("%c",&setway);
  if(setway=='y'||setway=='Y')
  {printf("To(way of date): ");scanf("%s",fout);}
  strcpy(out,in);   /*use out so that it will not change the source information*/
  encrypt(out,i);

  fpw=fopen(fout,"wt");
  if(fpw==NULL){printf("error");getch();exit(1);}

  i=0;
  while(out!='\0')
    {fputc(out,fpw);
    i++;
    }
    printf("\nFinished");


}

main()
{
int st;


randomize();
h:
clrscr();
cpyright();
printf("\n\n\n\n~~~~~~~~~~~~~~~~~~~~START~~~~~~~~~~~~~~~~~~~~~");
printf("\n\n       1:Decrypt words");
printf("\n       2:Encrypt words");
printf("\n       3:Exit\n Choose(1 or 2):");
scanf("%d",&chose);
getchar();               /*note: use getchar() to eat '\n' if you u use getch();error then;*/
if(chose==1)
  {filemake();

  }
else if(chose==2)
  { st=setsc();
    if(st==1){getin();}
    if(st==2)filemake();
    }
  else if(chose==3) exit(0);
      else goto h;



printf("\nend");
getch();
}

[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em2]
[ 此贴被a2a2yk在2006-11-12 18:29重新编辑 ]
离线bobcoc
只看该作者 1 发表于: 2007-11-22
题目是什么啊?贴出来看看就知道还有什么好算法了
离线yonghu86cs
只看该作者 2 发表于: 2008-02-23
。。。
离线cyb
只看该作者 3 发表于: 2008-03-12
我看了有一点不明白,你的加密解密函数中会把大小写混淆,if 之后应该是else if 吧
离线王者离去
只看该作者 4 发表于: 2008-04-03
题目是什么啊?贴出来看看就知道还有什么好算法了
快速回复
限100 字节
 
上一个 下一个