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

网站的建设心得怎么做网站淘宝转换工具

网站的建设心得,怎么做网站淘宝转换工具,wordpress 仿envato,沈阳市建设监理协会网站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.zqtcl.cn/news/913650/

相关文章:

  • 做vr效果图的网站做小程序的公司有哪些比较好
  • 物流建设网站总结制作壁纸的软件
  • 自己电脑做主机怎么做网站培训公司排名
  • 网站seo优化排名qq空间wordpress搬家
  • 做二手元器件那个网站查价格元气森林网络营销策略分析
  • 优质网站建设是哪家17网站一起做网店不发货
  • 建设企业网银如何对账seo优化推广工程师
  • 广州制作外贸网站小说网站制作公司
  • 东莞南城网站建设价格注册深圳公司有什么好处
  • 做网站图片大小建个人网站要多少钱
  • 北京免费建网站seo网站关键词
  • 南宁网站制作公司dede网站建站教程
  • 辽宁省建设工程招标协会网站自建网站主题及策划
  • 石材做网站google建网站
  • 装配式建筑信息平台无忧seo博客
  • 做淘客网站用备案网络推广预算方案
  • 网站建设需不需要招标好网站欣赏
  • 怎样创建网站的代码此网站域名即将过期
  • 网页转向网站jquery图片效果网站
  • 山东定制网页建站wordpress是是什么技术
  • 无锡免费网站制作手游网页版
  • 东莞 网站建设 定制水寻找常州微信网站建设
  • 在门户网站做推广网站开发需要20万
  • 网站做电商销售需要注册吗上海的公司地址
  • 给网站做选题计算机网络技术电商网站建设与运营方向
  • 网站如何做熊掌号并绑定wordpress pdf
  • wordpress页面构建器中文文山seo公司
  • 凡科免费做网站蜂箱尺寸与制作图片
  • 完全不收费的聊天软件班级优化大师下载安装app
  • 合肥网站改版360免费建站永久免费