stm32f4xx 加密
来源:互联网 发布:外贸数据网 编辑:程序博客网 时间:2024/06/05 06:03
文章参考http://www.61ic.com/Technology/embed/201311/50853.html,
一、ID获取
34 设备电子签名
电子签名存储在 Flash 区。可以使用 JTAG/SWD 或 CPU 对其进行读取。它包含出厂前编程 的标识数据,这些标识数据允许用户固件或其它外部设备将其接口与 STM32F4xx 微控制器 的特性自动匹配。
34.1 唯一设备 ID 寄存器(96 位)
唯一设备标识符最适合:
● 用作序列号(例如 USB 字符串序列号或其它终端应用程序)
● 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以
提高 Flash 中代码的安全性
● 激活安全自举过程等
96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远 不能改变这些位。
96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接 起来。
基址:0x1FFF 7A10
程序:
static u32 Lock_Code;void GetLockCode(void){ //获取CPU唯一ID CpuID[0]=*(vu32*)(0x1fff7a10); CpuID[1]=*(vu32*)(0x1fff7a14); CpuID[2]=*(vu32*)(0x1fff7a18); printf("\n\n %x %x %x\n\n",CpuID[2],CpuID[1],CpuID[0]); //加密算法,很简单的加密算法 Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3);}运行结果:
1)keil memroy窗口显示 ID地址处数据:
2)串口打印:
由上可知:该stm32芯片的96位 iD号 0x39353633 32334712 0025002a
二、加密措施
简单方法: 主程序运行前,对比读取ID号 与设置ID是否一致。问题:每个stm32都需要单独配置ID比较值.如何解决?
参考:http://www.61ic.com/Technology/embed/201311/50853.html,待完善。
0 0
- stm32f4xx 加密
- stm32f4xx.h
- STM32F4XX的FPU使用
- STM32F4XX工程步骤
- STM32F4xx时钟理解
- STM32F4XX启动文件分析
- STM32F4XX I2C驱动
- stm32f4xx标准外设固件库
- STM32F4xx FPU/DSP使用注意事项
- STM32F4XX启动过程学习笔记
- STM32F4xx FPU的设置(转)
- STM32F4xx 取得摄像头数据并进行处理
- STM32F4XX串口高效驱动篇1-UART
- STM32F4xx FPU的设置(转载)
- 使用KLite管理STM32F4xx的CCM
- 第一章 FreeRTOS移植——STM32F4xx
- RT-thread移植(基于STM32F4xx)
- STM32F4XX 采集编码器的溢出处理
- JAVA基础第五天
- java 6.24
- LintCode-k数和 II
- 基础了解
- 指针小应用:推箱子游戏
- stm32f4xx 加密
- Java基础(四)
- 键盘向右错位
- 集合总结
- [Java]学习笔记,随笔【一】
- file总结
- 批量产生ssh2项目中hibernate带注解的pojo类的快捷方法
- 1216: 斐波那契数列
- C++的内置类型和用户自定义类型的互相转换