STM32程序简单的ID加密
每一块芯片都有其独一无二的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加密相关推荐
- STM32的FLASH ID加密
#define FLASH_ID_OFFSET 30000 //任意定义一个数 //把地址直接减去或者加上一个数是不要程序中直接出现这个地址 volatile u32 Flash_ID_addr ...
- python对数字进行简单的可逆加密_Python实现简单的可逆加密程序实例
本文实例讲述了Python实现简单的可逆加密程序.分享给大家供大家参考.具体如下: Python代码如下: 代码如下: #coding=utf-8 ''''' Description: 可逆的加密与解 ...
- 一个stm32的简单程序的编译
一个stm32的简单程序的编译 stm32程序-LED 总结 stm32程序-LED 一.建立一个工程 1.打开Keil uVision5,找到project,然后点击New uVision Proj ...
- 简单的stm32程序
编写一个简单的stm32程序 一 MDK的安装 二编写一个简单的stm32程序 准备工作 编写程序代码 一 MDK的安装 keil官网网址下载 http://www.keil.com/download ...
- (C语言)简单的文件加密和解密程序
一个简单的文件加密和解密程序 main.c #include <stdio.h> #include <stdlib.h> #include "fun.h"i ...
- 嵌入式入门实践——编写简单STM32程序
嵌入式入门--编写简单STM32程序 目录 嵌入式入门--编写简单STM32程序 一.环境配置 1.安装前准备 2.安装流程 2.1安装keil 2.2破解keil5 2.3安装STM32pack 3 ...
- 【嵌入式】简单stm32程序的运行与Proteus的仿真测试
简单stm32程序的运行与Proteus的仿真测试 由于第一次使用keil5,多次尝试未能成功一次,故使用[学者-老栋]的固件包进行实验与测试来熟悉mdk开发环境和Proteus电路仿真软件. 参考: ...
- 简单stm32程序编写以及调试
简单stm32程序编写以及调试 一.环境配置 1.MDK的安装 MDK(Microcontroller Development Kit)是针对ARM处理器,特别是Cortex-M内核处理器的最佳开发工 ...
- 如何获取STM32 MCU的唯一ID
前段时间由于应用需要对产品授权进行限制,所以研究了一下有关STM32 MCU的唯一ID的资料,并最终利用它实现了我们的目标. 1.基本描述 在STM32的全系列MCU中均有一个96位的唯一设备标识符. ...
最新文章
- ANACONDA安装更新第三方包
- 对话微软黄学东:语音语言技术是镶在 AI 皇冠上的明珠
- 浅说《测试用例》----给测试新手的
- SQL语法的重要知识点总结
- jdbc之连接Oracle的基本步骤
- 复制java文件 案例
- 深度学习中的Normalization总结
- linux修改mdc时钟,Linux下用xsupplicant或mdc拨号上网
- 汽车防撞之FMCW(调频连续波)原理
- 从SVN检出项目下载到本地后出现错误
- linux常识 菜鸟教程
- 枕头里面加进这些小宝贝能治高血压!快告知你父母~
- 手机卸载不了刷机精灵
- Vue生命周期和钩子函数详解
- 数据产品经理的具象化
- 一个中东外贸业务员分享的干货
- 如何在2022年建立自己的NFT市场平台
- 平淡生活:过年的一点感慨
- 利益交错-HTML5视频标准之争
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍