【嵌入式】使用嵌入式芯片唯一ID进行程序加密实现

本文介绍了如何利用STM32的唯一ID和Flash实现对程序的加密,通过读取芯片ID并进行加密处理,确保即使烧写文件被获取,也无法在其他芯片上直接运行。作者还提供了详细的接口编写和注意事项,以及相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一 背景说明

二 原理介绍

三 设计实现

四 参考资料


一 背景说明

        项目程序需要进行加密处理

        考虑利用嵌入式芯片的唯一UID,结合Flash读写来实现

        加密后的程序,可以使得从芯片Flash中读取出来的文件(一般为HEX格式)不能用于其他的芯片。

二 原理介绍

        【1】芯片唯一ID

        芯片提供了器件电子签名,即唯一身份标识。该信息存储在产品唯一身份标识寄存器中:

        UID寄存器描述如下:

        其中,UID1、UID2均为16位,UID3为32位,UID4为32位。        

        这样就可以从0x0x1FFFF7E8地址读取3个32bit的数据,获取它的唯一ID

        【2】程序加密逻辑说明

        在讲解简单的程序加密方法之前,先了解一下通常的MCU程序复制方法。

        通过烧写器(或者其他手段),将MCU内部程序存储区中的内容全部读出,就获取了烧写文件。如果烧写文件没有被加密,则可以直接将它烧写到别的MCU中运行,就完成了复制

        有没有办法可以使得对方即使获取了烧写文件,也不能直接烧写到别的MCU中运行呢?

        我们可以利用芯片的唯一ID来实现一种简单的程序加密方法。由于每个芯片的唯一ID是不同的&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值