1、stm32的标识码UID
5)当然,最后就是把其作为一个安全密钥,然后与软件加密算法结合起来以降低固件被恶意复制的风险。
2、读取UID
对于该唯一标识ID,需要注意以下几点:
1)唯一标识ID只是stm32里面一种ID,其实一款芯片内部还有很多其他ID,比如设备ID和其他内部组件的ID等。
2)UID一共是96位具有唯一性,而截取中间的几位不一定具有唯一性。
1uint32_t Unique[3] = {0};
2uint8_t unique[12] = {0};
3
4 int main(void)
5 {
6 uint8_t i;
7
8 Unique[0] = *(uint32_t*)(0x1FFFF7E8);
9 Unique[1] = *(uint32_t*)(0x1FFFF7E8 + 4);
10 Unique[2] = *(uint32_t*)(0x1FFFF7E8 + 8);
11
12 printf("以uint32_t读:\r\n");//插入换行
13 printf("ID 0-31 :%x\r\n",Unique[0]);//插入换行
14 printf("ID 32-63 :%x\r\n",Unique[1]);//插入换行
15 printf("ID 64-95 :%x\r\n",Unique[2]);//插入换行
16
17 for(i = 0 ;i < 12;i++)
18 {
19 unique[i] = *(uint8_t*)(0x1FFFF7E8 + i);
20 }
21
22 printf("以uint8_t读:\r\n");//插入换行
23
24 for(i = 0;i<12;i++)
25 {
26 printf("ID byte%d :%x ",i,unique[i]);//插入换行
27 if(i%4 == 3) printf("\r\n");//插入换行
28 }
29
30 printf("\r\n公众号:最后一个bug\r\n");//插入换行
输出结果:
3、UID加密简易版
4、加强版本
5、另类版本
1#define Sect_TURE (UIDCODE - SAVECODE + 1)
2#define Sect_FALSE (UIDCODE - SAVECODE)
3
4#define Sect_NUM_1 (UIDCODE - SAVECODE + 1)
5#define Sect_NUM_2 (UIDCODE - SAVECODE + 2)
6......
6、小结
END
→点关注,不迷路←