序列加密

#include <stdio.h>
#include<string.h>
#include<stdlib.h>
char* encode(char* buf,int line)
{
    int len=strlen(buf);
    int nlen=len;
    if(len%line)
        nlen=len+(line-len%line);
    char* tmp=(char*)malloc(nlen+1);
    strcpy(tmp,buf);
    for(int i=strlen(tmp);i<nlen;i++)
    {
        tmp[i]='*';
    }
    tmp[nlen]='\0';
    char* de=(char*)malloc(nlen+1);
    char* se=de;
    char(*rp)[line]=tmp;
    for(int i=0;i<line;i++)
    {
        for(int j=0;j<(nlen/line);j++)
        {
            *se++=rp[j][i];
        }
    }
    return de;
}

char* decode(char* buf,int line)
{
    int len=strlen(buf);
    char* tmp=(char*)malloc(len+1);
    char* str=tmp;
    int row=len/line;
    char(*rp)[line]=buf;
    for(int i=0;i<line;i++)
    {
        for(int j=0;j<row;j++)
        {
            *str++=rp[j][i];
        }
    }
    while((*--str)=='*');
    *(++str)='\0';
   return tmp;
}

int main(int argc,char* argv[])
{
    char* str="china is great";
    char* s=encode(str,3);
    printf("%s\n",s);

    char* ss=decode(s,strlen(s)/3);
    printf("%s\n",ss);

    return 0;
}

 

posted @ 2022-01-10 10:55  sunshine_gzw  阅读(43)  评论(0编辑  收藏  举报