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

📄 main.c

📁 STM32 ID加密
💻 C
字号:
/*******************************************************************************
* File Name          : main.c
* Author             : Wuhan R&D Center, Embest
* Date First Issued  : 08/08/2008
* Description        : Main program body
********************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "stdlib.h"
#include "string.h"
#include "flash_write.h"
#include "secure.h"
#include "Board_Configure.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : main
* Description    : Main program
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
int main(void)
{
	vu16 i,j;
	char* temp_secure;
	vu32 code,temp_code;
	/* Configure the system clocks */
	RCC_Configuration();
	
	/* NVIC Configuration */
	NVIC_Configuration();
	
	/* Configure the GPIOs */
	GPIO_Configuration();
	
	/* Configure the USART1 */
	USART_Configuration();
//	printf("\r\n\r\n---------System boot success!----------\r\n");
//	code=CRC_CalcBlockCRC((uint32_t *)secure,256);
//	for(i=0;i<1024;i++)
//	{
//		if(secure[i]==(char)(code>>24))
//		{
//			j=1;
//			printf("1");
//		}
//		if(secure[i]==(char)((code>>16)&0x00ff))
//		{
//			j=1;
//			printf("2");
//		}
//		if(secure[i]==(char)((code>>8)&0x00ff))
//		{
//			j=1;
//			printf("3");
//		}
//		if(secure[i]==(char)(code&0x00ff))
//		{
//			j=1;
//			printf("4");
//		}
//		if(j==1)
//			for(j=0;j<32;j++)
//				if(i==4*secure[j])
//					printf("ok"); 	
//	}


	CRC_ResetDR();
	code=CRC_CalcBlockCRC((uint32_t *)(0x1ffff7e0),9);
	temp_code=secure[0x0344]<<24|secure[0x0318]<<16|secure[0xfd]<<8|secure[0x036a];
    //加密
	CRC_ResetDR();
    if(CRC_CalcBlockCRC((uint32_t *)secure,256)==temp_code)
	{
		temp_secure=malloc(1025);
		memmove(temp_secure,secure,1024);
		for(i=0;i<32;i++)
		{
			temp_secure[4*temp_secure[i]]=(char)(code&0x01);
			temp_secure[4*temp_secure[i]]^=temp_secure[4*temp_secure[i+992]];	
			code=code>>1;
		}
		Flash_Write((char *)secure,(char *)temp_secure,1024);
		free(temp_secure);
//		printf("\r\nSecure configure!");
	}
	//解密
	else 
	{
		temp_code=0;
		temp_secure=malloc(1025);
		memmove(temp_secure,secure,1024);
		for(i=0;i<32;i++)
		{
			temp_secure[4*temp_secure[31-i]]^=temp_secure[4*temp_secure[1023-i]];
			temp_code=temp_code*2+temp_secure[4*temp_secure[31-i]];	
		}
		free(temp_secure);
		if(code!=temp_code)
			while(1);
//		printf("\r\nThe ID is right!");
	}
	while(1)
	{
	
	}
}

/******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/

⌨️ 快捷键说明

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