⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message1.c

📁 这篇是写的关于最基础的加密和解密的流程。 这只是一个最基本的模型。
💻 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 + -