1.读出ID号#if defined(STM8S103) #define ID_BaseAddress (0x4865)#else// defined(STM8S105) #define ID_BaseAddress (0x48CD)#endifvoid GetUniqueID(unsigned char *p){ unsigned char i; unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress); for(i=0;i!=12;i++){*p++=*pIDStart++;}}2.把读出的ID号生成其他数据。不一定就是12字节的!并保存在内部EEPROM。在这个模块准备2个函数.一个用于加密.一个用于解密void StmWriteUniqueID(unsigned char Addr){ unsigned char i; FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET)FLASH_Unlock(FLASH_MEMTYPE_DATA); unsigned char *pEE=(unsigned char *)(FLASH_DATA_START_PHYSICAL_ADDRESS+(u32)Addr); unsigned char *pIDStart=(unsigned char *)(ID_BaseAddress); for(i=0;i!=6;i++)//由12字节生成12*N个字节 { *pEE++=第1种算法,商业原因.我的算法就不公开了.大家可以准备一个数组查表 while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET); *pEE++=第2种算法,商业原因.我的算法就不公开了。大家可以准备一个数组查表 while(FLASH_GetFlagStatus(FLASH_FLAG_EOP)== RESET); 。。。。 第N种算法 } }//解密函数unsigned char StmCheckUniqueID(unsigned char Addr)3.主函数里面设置一个时间最好设置长一点。半个钟或其他,让人家难跟踪 while(1) { 其他任务............... ///////////////////////////////////////////////////////////////////////// if((Flag&FLAG_CHECK_ID)==FLAG_CHECK_ID) { Flag&=~FLAG_CHECK_ID; if(StmCheckUniqueID(UniqueIDAddress)==1){IsIDCorrect=0x01;}//正确写入 else{IsIDCorrect=0x00;}//错误写入 } ///////////////////////////////////////////////////////////////////////// 其他任务............... }
导读:目前正在解读《STM8唯一ID号加密方法》的相关信息,《STM8唯一ID号加密方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM8唯一ID号加密方法》的详细说明。
简介:本文主要讲述的是STM8唯一ID号加密方法
提醒:《STM8唯一ID号加密方法》最后刷新时间 2024-03-14 01:10:14,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM8唯一ID号加密方法》该内容的真实性请自行鉴别。