在网络发达的本日,选择加密已是我们别无选择。虽然我们知道在互联网上进行文件传输、电子邮件等商务往来存在许多不屈安成分,特殊是对付研发公司和一些机密文件在网络上传输存在着风险隐患,但是互联网的高效性让我们只能通过加密的方法办理。而且这种不屈安性是互联网存在根本——TCP/IP协议所固有的,包括一些基于TCP/IP的做事;另一方面,互联网给浩瀚的商家带来了无限的商机,互联网把全天下连在了一起,走向互联网就意味着走向了天下,这对付无数企业家无疑是梦寐以求的好事,特殊是对付中小企业。
那我们的STM32是如何加密的呢?个中的一个方法便是禁止读出Flash存储器内容,大家常日说的“加密”是浸染于全体Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常实行才能读出,通过调试器(JTAG或SWD)和从RAM中启动这两种办法是不能读出程序的。我们在程序加密的目的是防止板子中的程序被其他人读出利用。
设想一下你公司在进行着某个招标项目的投标事情,事情职员通过电子邮件的办法把他们单位的标书发给招标单位,如果此时有另一位竞争对手从网络上盗取到你公司的标书,从中知道你公司投标的标的,那后果将是让无数个废寝忘食的昼夜白白的摧残浪费蹂躏掉。让你辛劳的劳动成果变得毫无代价。
下面便是详细的代码操作:
if (FLASH_GetReadOutProtectionStatus()!=SET)
{
FLASH_ReadOutProtection(ENABLE);
FLASH_Lock();
}
解除保护:
if (FLASH_GetReadOutProtectionStatus()==SET)
{
FLASH_Unlock();
FLASH_ReadOutProtection(DISABLE);
}
这种办法可以通过RAM启动和IAP的办法解除保护,但是解除保护的同时FLASH也被擦除了。
还有一种加密是用ID加密程序,这是一种相对付比较可靠的办法,每个MCU都有唯一的ID,这个唯一码可以利用作软件加密,ID号是12个字节大小共96位,ID号的起始地址是0x0x1FFFF7E8。利用这个ID码程序在运行时比较ID码是否精确来判断是否往下实行程序。我们将底板也设定一个属于自己的ID号,并且把它保存到程序当中,及时别人破解了程序也不能在你的板卡上利用;这个方法掩护起来会比较麻烦。
U8 sys_id[12]={0}; //存储stm32芯片的ID号的数组
for(i=0;i<12;i++)
{
sys_id[i]=(u8)(0x1FFFF7E8+i); //读取STM32芯片的唯一ID
}
希望以上的知识能够给大家供应帮助,这期我们先分享到这里,以为有用的可以给华维点个赞关注一下!
想要一起学习单片机的朋友,评论”我要入门“,有惊喜,加入我们,就可以与导师一对一互动,快速发展