关于字符串加密!
怎样将输入的一串字符加密,让外人不看出原来的字符。 问题点数:100、回复次数:2Top
1 楼kbsoft(让世界充满爱!)回复于 2002-03-28 11:18:33 得分 100
用链表来实现Top
2 楼kbsoft(让世界充满爱!)回复于 2002-03-28 11:19:06 得分 0
#include "stdio.h"
#include "alloc.h"
#define CR 13
typedef struct node { char ch;
struct node *forward;
struct node *backward;}CODE;
main()
{char *decode(),old[256];
int strlen(),key,num=0;
printf("\nPlease input the telegraph:\n");
while(num<255 && (old[num++]=getch())!=CR);
od[(num==255)?num:num-1='0';
do { printf("\nplease input key=?(key>1):);
scanf("%d",&key);}while(key<=1);
printf("\nthe decode of telegraph:'%s'is :\n'%s'\n",old,decode(old,key));
}
char *decode(char *old,int key)
{ char *new;int length,count,i;
CODE *loop,*p;
length=strlen(old);
loop=(CODE *)malloc(length * sizeof(CODE));
for(i=1;i<length-1;i++)
{loop[i].forward=&loop[i+1];
loop[i].backward=&loop[i-1];}
loop[0].backward=&loop[length-1];
loop[0].forward=&loop[1];
loop[length-1].forward=loop;
loop[length-1].backward=&loop[length-2];
for(p=loop,i=0;i<length;i++){
for(count=1;count<key;count++)
p=p->forward;
p->ch=*old++;
p->backward->forward=p->forward;
p->forward->backward=p->backward;
p=p->forward;
}
new=(char *)malloc((length+1)*sizeof(char));
for(i=0;i<length;i++) new[i]=loop[i].ch;
new[length]='\0';
return(new);}
int strlen(char *s)
{ int len=0;
while(*s++!='\0') len++;
return(len);
}
old存放原文字符,decode函数用于加密Top




