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

📄 testcrypt.c

📁 一种的著名的加解密算法ssf43. 国家密码管理委员会办公室批准的用于WLAN的SSF43对称分组加密算法.
💻 C
字号:
#include "ssf43.h"
#include "SymmCrypt.h"
#include "input.h"

void printMsg(char *title,bit8 *content,bit32 size)
{
	bit32 i;
	printf("%s[ ",title);
	for(i=0;i<size;i++)
	{
		printf("%02x ",content[i]);
	}
	printf("]\n");	
}

int WriteFile( char *name, bit8 *buf, int size )
{
	FILE* p = fopen(name, "wb");
	if( p!= NULL){
		fwrite( buf, 1, size, p);
	}else
		return -1;
	
	fclose(p);
	
	return 0;
}

//读取文件函数
int ReadFile( char* fileName, bit8* hbFileBuf, int* size )
{
	FILE *fp;	
	int i = 0;	

	if((fp = fopen(fileName,"rb"))==NULL)
	{		
		return -1;
	}

	while(!feof(fp))
	{			
		hbFileBuf[i] = (bit8)fgetc(fp);
		i++;
	}
	
	*size = i-1;
	fclose(fp);
	return 0;
}

int main()
{

	
	int ret = 0;
/*	bit8 key[16] = {0x79,0x0c,0xcf,0x80,
					0x36,0x11,0x4c,0x95,
					0x6b,0x6c,0x64,0x43,
					0x99,0x6f,0x40,0xb8};
	bit8 plain[16] = {0xa4,0xa4,0x44,0x0a,
					  0x89,0x9e,0xa4,0xb3,
					  0x5a,0x18,0x48,0x29,
					  0x74,0x45,0x01,0x8c};*/
	bit8 key00[16] = {0x00,0x00,0x00,0x00,
					0x00,0x00,0x00,0x00,
					0x00,0x00,0x00,0x00,
					0x00,0x00,0x00,0x01
					};
	
	bit8 plain00[16] = {0x00,0x00,0x00,0x00,
					  0x00,0x00,0x00,0x00,
					  0x00,0x00,0x00,0x00,
					  0x00,0x00,0x00,0x00
					};
	/*				
	bit8 plain[16] = {0x00,0x01,0x02,0x03,
					  0x04,0x05,0x06,0x07,
					  0x08,0x09,0x0a,0x0b,
					  0x0c,0x0d,0x0e,0x0f
					};
	*/
	
/*	bit8 cipher[16] = {0x44,0x90,0xf2,0xa7,
					   0x6f,0x4c,0x05,0xa3,
					   0x17,0x42,0xed,0xa5,
					   0x35,0xe4,0xb0,0xec
					};*/

	/*bit8 key[16] = {0x00,0x01,0x02,0x03,0x04,
					0x05,0x06,0x07,0x08,0x09,
					0x0a,0x0b,0x0c,0x0d,0x0e,
					0x0f};
	bit8 plain[16] = {0x00,0x01,0x02,0x03,0x04,
					0x05,0x06,0x07,0x08,0x09,
					0x0a,0x0b,0x0c,0x0d,0x0e,
					0x0f};*/
	bit8 cipher[16];
	bit8 de_cipher[16];

	bit32 g_enKey[40];
	bit32 g_deKey[40];

	//bit8* key=(bit8*)malloc(16);
	bit8* key=NULL;
	bit8* plain=NULL;
	//bit8 key[16];
	//bit8 plain[16];
	int i;
	char sw;

	//key=(bit8*)malloc(16);
	
	while(1)
	{
	printf("Plz input a char\n");
	sw=getchar();

	switch(sw)
	{
		
		case '0': 
		{
			printf("sw=%c\n",sw);
			key=key00;
			plain=plain00;
			break;
		}
		case '1': 
		{
			printf("sw=%c\n",sw);
			key=key01;
			plain=plain01;
			break;
		}
		case '2': 
		{
			printf("sw=%c\n",sw);
			key=key02;
			plain=plain02;
			break;
		}

		case '3': 
		{
			printf("sw=%c\n",sw);
			key=key03;
			plain=plain03;
			break;
		}

		case '4': 
		{
			printf("sw=%c\n",sw);
			key=key04;
			plain=plain04;
			break;
		}

		case '5': 
		{
			printf("sw=%c\n",sw);
			key=key05;
			plain=plain05;
			break;
		}

		case '6': 
		{
			printf("sw=%c\n",sw);
			key=key06;
			plain=plain06;
			break;
		}
		
		case '7': 
		{
			printf("sw=%c\n",sw);
			key=key07;
			plain=plain07;
			break;
		}

		case '8': 
		{
			printf("sw=%c\n",sw);
			key=key08;
			plain=plain08;
			break;
		}

		case '9': 
		{
			printf("sw=%c\n",sw);
			key=key09;
			plain=plain09;
			break;
		}
		default: 
			printf("sw=%c\n",sw);
			printf("error & return -1 \n");
			return (-1);
	}
	
	getchar();
  
	printMsg("密钥为:\n", key, 16);

	printMsg("输入明文为:\n", plain, 16);

	en_key_ssf43(key, g_enKey);

	printf("加密层密钥为:\n");
	for(i=0; i<40; i++)
	{
		printf("%08x ",g_enKey[i]);
	}
	printf("\n");

	cipher_ssf43(g_enKey, plain, cipher);	

	de_key_ssf43(g_enKey,g_deKey);
	
	printf("解密层密钥为:\n");
	for(i=0; i<40; i++)
	{
		printf("%08x ",g_deKey[i]);
	}
	printf("\n");
	
	cipher_ssf43(g_deKey, cipher, de_cipher);

	printMsg("密文为:\n", cipher, 16);
	printMsg("解密明文为:\n", de_cipher, 16);
	printMsg("输入明文为:\n", plain, 16);
	if(memcmp(plain,de_cipher,16)==0)
		printf("密文还原明文成功。\n");
	else
		printf("密文还原明文失败。\n");
	
	//getchar();
	} //while(1)
	getchar();

	//free(key);
	return ret;

}

⌨️ 快捷键说明

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