unsigned int BASE=128;//以128为基进行编码
unsigned int panding(char *s,unsigned int ba){
int len=strlen(s);
if(len%ba!=0) len+=ba-len%ba;
printf("len=%d",len);
return len;
}
unsigned int encode(char *s,unsigned int ba){
printf("the encode is begin\n");
//printf("the s is %s\n",s);
unsigned int ans=0;
for( int i=0;i<ba;++i){
ans=ans*BASE+(unsigned int)s[i];
printf("i=%d,si=%d\n",i,s[i]);
}
printf("encode is end --ans=%d\n",ans);
return ans;
}
char temp[4];
void decode(unsigned int a,unsigned int ba){
printf("the decode is begin\n");
printf("the a is %d\n",a);
for( int i=ba-1;i>=0;--i){
temp[i]=a%BASE;
a/=BASE;
}
for( int i=ba-1;i>=0;--i){
printf("%c",temp[i]);
printf("\n decode is end \n");
}
}
char plain[1000],cipher[1000];
void gao(char *plain,char *cipher,unsigned int c,unsigned int ba){
int len=panding(plain,ba),j=0;
for( int i=0;i<len/ba;++i){
unsigned int a=encode(plain+ba*i,ba),b;
b=abmodc(a,c,N);
memset(temp,0,sizeof(temp));
decode(b,ba);
for(unsigned int j=0;j<ba;++j){
cipher[ba*i+j]=temp[j];
}
}
printf("the cipher is %s",cipher);
}
void encrypt(){
gao(plain,cipher,E,4);
}
void decrypt(){
gao(cipher,plain,D,4);
}
测试结果:输入数字能成功加解密,输入为部分字符时不能成功,求哪里出现了内存越界溢出啊!!