📄 message1.c
字号:
#include"message.h"
#include"stdio.h"
#include"string.h"
void main()
{
int i,h,l,n,r;
char array[100],array1[100],array2[100],array3[100],in[8],out[8];
char w;
//密钥
int k1[8];
//储存明文的二进制码
int m[8][8];
//储存密钥的二进制码
int k[8][8];
//储存密文的二进制码
int c1[8][8];
int c2[8][8];
//储存由密文转换过来的明文二进制码
int mm[8][8];
//储存明文的十进制码
int m1[8];
//储存密文的十进制码
int mm1[8];
int mm11[8];
//储存由密文过来的明文的十进制码(ASCLL)
int m11[8];
getkey(k1,8);
printf("\n\n");
printf("The key(10):\n");
for(i=0;i<8;i++)
printf("%d ",k1[i]);
printf("\n\n");
inttfmbyte(k,k1,8);
//明文输入
printf("Please put into the message ('~' indicate the end):\n");
printf("***************************************************************\n");
while(1)
{
for(i=0;i<100;i++)
{
scanf("%c",&w);
if(w!='~')
array[i]=w;
else break;
}
array[i]='\0';
break;
}
printf("\n");
printf("***************************************************************\n");
n=strlen(array);
printf("The length of the message is:%d\n",n);
printf("\n");
r=n%8;
if(r!=0)
printf("The massage shoude add %d charactors!!\n",8-r);
printf("\n");
strcpy(array1,array);
if(r!=0)
{
for(i=0;i<8-r;i++)
array1[n+i]='#';
}
array1[n+i]='\0';
printf("***************************************************************\n");
printf("\n");
printf("The added message (length %d) is:\n",n+8-r);
printf("%s",array1);
printf("\n\n");
n=strlen(array1);
h=n/8;
for(l=0;l<h;l++)
{
for(i=0;i<8;i++)
m1[i]=0;
for(i=0;i<8;i++)
mm1[i]=0;
for(i=0;i<8;i++)
in[i]=array1[8*l+i];
//将明文转换成其ASCLL值
for(i=0;i<8;i++)
*(m1+i)=chartfmint(in[i]);
//将ASCLL码装换成二进制码
inttfmbyte(m,m1,8);
mtoc(m,k,c1,8);
bytetfmint(c1,mm1,8);
//将密文转换成其ASCLL值
for(i=0;i<8;i++)
{
//*(out+i)=inttfmchar(mm1[i]);
array2[8*l+i]=inttfmchar(mm1[i]);//inttfmchar(mm1[i]);
}
}
array2[n]='\0';
printf("***************************************************************\n");
printf("The crypto messgage( length %d):\n",strlen(array2));
printf("\n");
for(i=0;i<n;i++)
printf("%c",array2[i]);
printf("\n\n");
//密文转换成明文
n=strlen(array2);
h=n/8;
for(l=0;l<h;l++)
{
for(i=0;i<8;i++)
mm11[i]=0;
for(i=0;i<8;i++)
m11[i]=0;
for(i=0;i<8;i++)
out[i]=array2[8*l+i];
//将密文转换成其ASCLL值
for(i=0;i<8;i++)
*(mm11+i)=chartfmint(out[i]);
//将ASCLL码装换成二进制码
inttfmbyte(c2,mm11,8);
ctom(c2,k,mm,8);
bytetfmint(mm,m11,8);
for(i=0;i<n;i++)
array3[8*l+i]=inttfmchar(m11[i]);
}
for(i=n-1;i>n-8;i--)
if(array3[i]!='#')
break;
array3[i+1]='\0';
n=strlen(array3);
printf("***************************************************************\n");
printf("The message which is transform from the crypto message(length %d):\n",n);
printf("\n");
for(i=0;i<n;i++)
printf("%c",array3[i]);
printf("\n\n");
printf("***************************************************************\n");
//判断输入的字符串是否和我转换回来的字符串相同
printf("To judge whether the input string and the one which I converted back to \n\nis the same string(YES or NO):");
if(strcmp(array,array3))
printf(" NO\n\n");
else
printf(" YES\n\n");
printf("***************************************************************\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -