?? 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 + -