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 + -
显示快捷键?