encode.c

来自「一个利用随机数加密字串的算法,用VC实现」· C语言 代码 · 共 55 行

C
55
字号
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>

unsigned char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
int search(char str[],char ch)
{/*在str串中查找字符ch*/
      int i,result=-1;
      for (i=0;i<strlen(str);i++)
        if (str[i]==ch) {result=i; break;}
      return result;
}
void encode(unsigned char src[],unsigned char dst[])
{/*dst长度是src长度的2倍*/
      int i,j,k,m,len;
      unsigned char tmp;
      len=strlen(src);
      randomize();
      for (i=0;i<len;i++) {
        j=rand()%6;
        tmp=src[i];
        tmp=tmp^j;
        k=tmp%strlen(str);
        m=tmp/strlen(str);
        m=m*8+j;
        dst[2*i]=str[k]; dst[2*i+1]=str[m];
      }
      dst[2*i]='\0';
}
void decode(unsigned char src[],unsigned char dst[])
{/*dst长度是src长度的1/2*/
      int i,j,k,m,len;
      unsigned char tmp;
      len=strlen(src);
      for (i=0;i<len;i+=2) {
        k=search(str,src[i]);
        m=search(str,src[i+1]);
        j=m%8; 
        m=m/8;
        tmp=m*strlen(str)+k;
        tmp=tmp^j;
        dst[i/2]=tmp;
      }
      dst[i/2]='\0';
}
main()
{
      unsigned char s1[30]="hello world",s2[30],s3[30];
      encode(s1,s2);
      puts(s2);
      decode(s2,s3);
      puts(s3);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?