每一块芯片都有其独一无二的ID,并且ID存储在芯片内部。

我们的代码可以通过读取芯片的ID和我们事先设定的ID值进行比较
如果匹配上了才正常运行代码,从而起到加密效果,防止他人复制程序。

STM32F103ZET6的id起始位是0x1FFFF7E8

#include "id.h"// 把地址直接减去一个数是不要在程序中直接出现这个地址#define STM32_ID_D  352525   // 任意的一个数 volatile u32 STM32_ID_addr[3]={0x1FFFF7E8 - STM32_ID_D,0x1FFFF7EC + STM32_ID_D,0x1FFFF7F0 - STM32_ID_D};uint32_t id[3];// 因为不想让程序在反汇编后直接找到这个地址,所以这个地址是运算出来的,
// 跟STM32_ID_addr反运算,当然了也可以用高级的算法,注意不能让编译器优化这个地址
void  ID_evaluation(void)
{u32 addr;addr=STM32_ID_addr[0] + STM32_ID_D;id[0] = *(__IO uint32_t *)addr;addr=STM32_ID_addr[1] - STM32_ID_D;id[1] = *(__IO uint32_t *)addr;addr=STM32_ID_addr[2] + STM32_ID_D;id[2] = *(__IO uint32_t *)addr;//不知道自己芯片id的可以在此处printf打印出id[0],id[1],id[2]//打印出来后放入下面的比较函数,记得删除打印的代码
}void If_Not_ID(void) //如果ID匹配不上  死循环
{int i=1;while(i)if((id[0]==97910579)&&(id[1]==861485360)&&(id[2]==1360034085)){//我事前读取出了芯片的ID值 然后再写入代码比较i--;}
}

STM32程序简单的ID加密相关推荐

  1. STM32的FLASH ID加密

    #define FLASH_ID_OFFSET 30000    //任意定义一个数 //把地址直接减去或者加上一个数是不要程序中直接出现这个地址 volatile u32 Flash_ID_addr ...

  2. python对数字进行简单的可逆加密_Python实现简单的可逆加密程序实例

    本文实例讲述了Python实现简单的可逆加密程序.分享给大家供大家参考.具体如下: Python代码如下: 代码如下: #coding=utf-8 ''''' Description: 可逆的加密与解 ...

  3. 一个stm32的简单程序的编译

    一个stm32的简单程序的编译 stm32程序-LED 总结 stm32程序-LED 一.建立一个工程 1.打开Keil uVision5,找到project,然后点击New uVision Proj ...

  4. 简单的stm32程序

    编写一个简单的stm32程序 一 MDK的安装 二编写一个简单的stm32程序 准备工作 编写程序代码 一 MDK的安装 keil官网网址下载 http://www.keil.com/download ...

  5. (C语言)简单的文件加密和解密程序

    一个简单的文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h"i ...

  6. 嵌入式入门实践——编写简单STM32程序

    嵌入式入门--编写简单STM32程序 目录 嵌入式入门--编写简单STM32程序 一.环境配置 1.安装前准备 2.安装流程 2.1安装keil 2.2破解keil5 2.3安装STM32pack 3 ...

  7. 【嵌入式】简单stm32程序的运行与Proteus的仿真测试

    简单stm32程序的运行与Proteus的仿真测试 由于第一次使用keil5,多次尝试未能成功一次,故使用[学者-老栋]的固件包进行实验与测试来熟悉mdk开发环境和Proteus电路仿真软件. 参考: ...

  8. 简单stm32程序编写以及调试

    简单stm32程序编写以及调试 一.环境配置 1.MDK的安装 MDK(Microcontroller Development Kit)是针对ARM处理器,特别是Cortex-M内核处理器的最佳开发工 ...

  9. 如何获取STM32 MCU的唯一ID

    前段时间由于应用需要对产品授权进行限制,所以研究了一下有关STM32 MCU的唯一ID的资料,并最终利用它实现了我们的目标. 1.基本描述 在STM32的全系列MCU中均有一个96位的唯一设备标识符. ...

最新文章

  1. ANACONDA安装更新第三方包
  2. 对话微软黄学东:语音语言技术是镶在 AI 皇冠上的明珠
  3. 浅说《测试用例》----给测试新手的
  4. SQL语法的重要知识点总结
  5. jdbc之连接Oracle的基本步骤
  6. 复制java文件 案例
  7. 深度学习中的Normalization总结
  8. linux修改mdc时钟,Linux下用xsupplicant或mdc拨号上网
  9. 汽车防撞之FMCW(调频连续波)原理
  10. 从SVN检出项目下载到本地后出现错误
  11. linux常识 菜鸟教程
  12. 枕头里面加进这些小宝贝能治高血压!快告知你父母~
  13. 手机卸载不了刷机精灵
  14. Vue生命周期和钩子函数详解
  15. 数据产品经理的具象化
  16. 一个中东外贸业务员分享的干货
  17. 如何在2022年建立自己的NFT市场平台
  18. 平淡生活:过年的一点感慨
  19. 利益交错-HTML5视频标准之争
  20. 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍

热门文章

  1. 【lombok】Lombok详解(日志记录和简化代码)
  2. 【一步步教你用U盘安装XP系统】
  3. P小于0.05的P应该是大写的P还是小写的P
  4. noahbuscher\macaw Fatal error
  5. 三、支付宝支付对接 - 申请、配置、签约、获取RSkey(1)
  6. CRM系统帮助企业降低运营成本
  7. Unity-shader学习笔记(七)
  8. 脉冲控制仪维修常见的故障分析
  9. Matlab 2019b打开没有编辑器、发布和视图
  10. 使用Bootstrap Bar来增加Onboarding Progress Bar功能。