当前位置: 首页 > news >正文

三元区建设小学网站品牌建设目标包括哪些方面

三元区建设小学网站,品牌建设目标包括哪些方面,php网站开发是做什么的,网站地区词优化0、前言 STM32编译后的代码存在FLASH中#xff0c;通过外部工具可以读出来全部数据#xff0c;一旦硬件抄板一样#xff0c;再将FLASH数据全部拷贝至抄板单片机中#xff0c;既可以完全实现硬件和软件功能抄袭。因此#xff0c;需要对自己的应用程序加密#xff0c;即使…0、前言 STM32编译后的代码存在FLASH中通过外部工具可以读出来全部数据一旦硬件抄板一样再将FLASH数据全部拷贝至抄板单片机中既可以完全实现硬件和软件功能抄袭。因此需要对自己的应用程序加密即使被抄板和读取FLASH数据拷贝过后仍然无法执行相应的功能。【ps:没有解不开的单片机主要看解密的经济效益】 主要思路利用每个芯片的96位唯一ID进行一定的计算和单向加密得到唯一的应用AppKey并保存至FLASH运行APP时读取该FLASH位置的AppKey并与计算得到的AppKey比较是否相同如果相同则正常运行不相同则退出。 因此在正确运行APP之前需要保证FLASH保存有AppKey可以在设备出厂前提前通过代码方式写入FLASH再烧写正常的APP代码。为了减小代码烧写的工作量采用IAP的方式实现自动出厂配置方案包括三个工程BootLoaderEncryptAPP。三个工程在FLASH中的内存分配与OTA-IAP相同。 一、计算AppKey step1 :为避免出现UID_BASE的明文在读取UID时对其地址进行一定的简单运算再读取UID。 #define ADDRSEED (0x20170620) #define METHORDADDR (ADDRSEED^11) #define METHORDEUID (ADDRSEED|0x12345678)volatile const uint32_t uidaddr[3] {UID_BASEMETHORDADDR,UID_BASE4-METHORDADDR,UID_BASE8METHORDADDR};//get uid, by calc uidbase //uid: ptr, 96byte length static void Getuid(volatile uint32_t *uid) {volatile uint32_t addrtemp;addrtemp uidaddr[0] - METHORDADDR;uid[0] *(volatile uint32_t*)(addrtemp);addrtemp uidaddr[1] METHORDADDR;uid[1] *(volatile uint32_t*)(addrtemp);addrtemp uidaddr[2] - METHORDADDR;uid[2] *(volatile uint32_t*)(addrtemp); }step2 :对UID进一步简单加密。 //encrypt uid //euid: ptr, 96byte length static void Encryptuid(volatile uint32_t *euid) {uint32_t uid[3];Getuid(uid);euid[0] uid[0] METHORDEUID;euid[0] ^ ADDRSEED;euid[1] uid[1] METHORDEUID;euid[1] ^ ADDRSEED;euid[2] uid[2] METHORDEUID;euid[2] ^ ADDRSEED; }step3 :对EncryptUID计算MD5计算128bit单向散列值。 //generate md5 by euid //key: ptr, 16byte length void GenerateMD5(uint8_t *md5) {uint32_t *euid;Encryptuid(euid);MD5_Init(Context);MD5_Update(Context,(uint8_t *)euid,96);MD5_Final(Context,md5); }step4 :根据FLASH页容量大小将MD5扩充至1024Byte采用随机数扩充。 //generate key //key: ptr, 1024 length, md5 extend to 1024 void GenerateKey(uint8_t *key) {uint16_t i,j;uint8_t md5val[16];GenerateMD5(md5val);j 0;for(i 0; i 1024; i){if(i%64 0){key[i] md5val[j];}else{srand1(HAL_GetTick());key[i] randr(0,0xFF);}} }二、自动配置流程 Encrypt工程代码只在出厂时运行一次目的是利用UID产生AppKey并将其提前写入指定FLASH中因此该段代码执行一次后将擦除。可设置Encrypt在APPA区中运行利用IAP功能将APPB区的APP固件在执行完Encrypt固件后搬移至APPA区。 具体地出厂自动配置密钥流程如下 Step1上电启动单片机首先执行BootLoader程序。 Step2BootLoader读取Parameter参数区此时参数区设置为无升级任务BootLoader执行APPA区的代码进入 Step3 。存在升级任务时执行 Step6 Step7 。 Step3BootLoader跳转至APPA执行Encrypt代码根据UID计算AppKey执行 Step4 和 Step5 。 Step4将计算的AppKey存入Parameter区指定的位置并写入升级标志和APPB区相关固件参数。 Step5重启单片机进入BootLoader。 Step6清除升级任务标志。 Step7拷贝APPB代码至APPA区即擦除Encrypt代码最后执行重启进入 Step5 重启后运行真正的APP代码。 三、出厂固件合并 出厂前需要在STM32中烧写BootLoader、Encrypt和APP三份Hex固件加大了时间开销三份Hex固件存在FlASH的不同位置地址容易出错。因此可将三份Hex进行合并成一个Hex进行一次烧写按照自动配置流程完成加密和代码搬运工作。 BootLoader工程在程序一开始运行其地址和空间大小分配仍然按照0x08000000和20kB分配编译生成boot.hex。Encrypt工程和APP都在APPA区运行因此两者地址和空间大小分配为相同的0x08005000和50kB。APP.Hex只是保存在APPB区带加密执行完成后通知Bootloader进行搬移。 出厂固件按照boot.Hexencrypt.Hexapp.Hex的顺序合并打开Hex文件分别用后一个文件的全部内容替换前一个文件的最后一行保存为hex格式就可以。
http://www.huolong8.cn/news/303492/

相关文章:

  • 建立个人网站流程王也道长头像
  • 做百度网站排名软件网站建设的价位
  • 舆情服务网站做家教在哪个网站找
  • 网站建设免费按词收费微网站建设及微信推广方案ppt模板
  • 住房城乡建设证书查询现在网站如何做优化
  • 珠海电商网站制作网站开发的步骤
  • 广东建设继续教育网站茂民网站建设
  • 做外贸需要关注的网站有什么网站建设招标无锡
  • 外贸网站建设企业免费软件下载网站哪个好
  • 广安网站建设公司产品网站系统
  • 没有域名的时候建网站深圳企业网站建设推荐公司
  • 做物流的网站有哪些中文 域名的网站
  • 视频网站 怎么做网站建站建设哪家好
  • 做一件代发的网站那些网站hr可以做兼职
  • 创立网站国内wordpress主题网站
  • 网站开发前端和后端工作做十来个网站优化
  • 只用ip做网站 不备案建设个人网站需要备案吗
  • phpstudy搭建本地网站网站建设公司那家好
  • 甘肃省建设监理协会网站对象储存做网站
  • 社交网站 设计免费做mc皮肤网站
  • 物理机安装虚拟机做网站郓城网站建设电话
  • 东营网站建设设计网站如何更新
  • 电商网站开发人员结构怎么策划一个营销方案
  • 陕西建设交通集团招聘信息网站购物系统论文
  • 中国建设通网站学生网页设计主题
  • 网站设计宽度尺寸河南造价信息网
  • 我来做煮官方网站招商网网站建设方案
  • 找网站做任务领q币wordpress 修改样式
  • 建站加盟南京百度
  • 网站设计网站机构网站统计工具有哪些