网站域名解析长沙做网站多少钱

web/2025/10/3 12:29:36/文章来源:
网站域名解析,长沙做网站多少钱,珠宝设计师网,商品定制首页nRF52832——唯一 ID 与加密解密 唯一 ID 概念唯一 ID 作用读取唯一 ID 唯一 ID 用于加密TEA 加密算法唯一 ID 的加密和解密 唯一 ID 概念 唯一 ID 作用 nRF52xx 微控制器提供一组 64 位的唯一 ID 号#xff0c;这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器在任何情况下都是唯一的。用户在何种情况下都不能修改这个身份标识。按照用户不同的用法可以以字节(8 位)为单位读取也可以以半字(16 位)或者全字(32 位)读取。对应唯一ID 号常见的应用场合如下面几种 用来作为序列号用来作为密码在编写闪存时将此唯一标识与软件加解密算法结合使用提高代码在闪 存存储器内的安全性用来激活带安全机制的自举过程 读取唯一 ID 设备唯一 ID 保存存在寄存器 FICR 中工厂信息配置寄存器(FICR)是在工厂预先编程的用户不能删除。这些寄存器包含特定于芯片的信息和配置。 寄存器名称偏移地址描述DEVICE ID[0]0x060设备 identifierDEVICE ID[1]0x064设备 identitier 因此识别芯片中的唯一 ID 的方式就是读取寄存器 DEVICEID 内的值因为这个参数值是不能修改的出厂的时候由厂家固化的。因此寄存器 DEVICEID 为只读寄存器我们在串口例子基础上就行修改因此工程结构不就行修改。读取了唯一 ID 的寄存器值后通过串口打印输出来进行演示。编写程序如下所示 #include stdbool.h #include stdint.h #include stdio.h #include app_uart.h #include app_error.h #include nrf_delay.h #include nrf.h #include bsp.h #if defined (UART_PRESENT) #include nrf_uart.h #endif #if defined (UARTE_PRESENT) #include nrf_uarte.h #endif//#define ENABLE_LOOPBACK_TEST /** if defined, then this example will be a loopback test, which means that TX should be connected to RX to get data loopback. */#define MAX_TEST_DATA_BYTES (15U) /** max number of test bytes to be used for tx and rx. */ #define UART_TX_BUF_SIZE 256 /** UART TX buffer size. */ #define UART_RX_BUF_SIZE 256 /** UART RX buffer size. */void uart_error_handle(app_uart_evt_t * p_event) {if (p_event-evt_type APP_UART_COMMUNICATION_ERROR){APP_ERROR_HANDLER(p_event-data.error_communication);}else if (p_event-evt_type APP_UART_FIFO_ERROR){APP_ERROR_HANDLER(p_event-data.error_code);} }#define UART_HWFC APP_UART_FLOW_CONTROL_DISABLED/*** brief Function for main application entry.*/ int main(void) {uint32_t err_code;uint32_t id1,id2;id1NRF_FICR-DEVICEID[0]; //读取id低31位id2NRF_FICR-DEVICEID[1];//读取id高31位const app_uart_comm_params_t comm_params {RX_PIN_NUMBER,TX_PIN_NUMBER,RTS_PIN_NUMBER,CTS_PIN_NUMBER,UART_HWFC,false, #if defined (UART_PRESENT)NRF_UART_BAUDRATE_115200 #elseNRF_UARTE_BAUDRATE_115200 #endif};APP_UART_FIFO_INIT(comm_params,UART_RX_BUF_SIZE,UART_TX_BUF_SIZE,uart_error_handle,APP_IRQ_PRIORITY_LOWEST,err_code);APP_ERROR_CHECK(err_code);while (1){printf(打印id%lx%lx\r\n,id1,id2);nrf_delay_ms(1000);}}唯一 ID 用于加密 TEA 加密算法 唯一 ID 常用的场合就是加密我们可以采用一个简单的加密算法对 ID 号进行加密。那么如果要正确运行程序就需要对唯一 ID 进行正确解密。 常用的代码加密方案一般有两种。 通过某种硬件手段防止单片机 FLASH 中的代码被读出比如禁止读取、或者关闭下载接口就算代码能被读出来把它烧到另一个芯片中也无法正常运行与特定芯片紧紧绑定。 以目前的技术水平来说不论如何禁止似乎都有人可以把程序从芯片内部读取出来。那么就算被窃取者读取了程序的二进制文件烧到另一个同型号的处理器芯片里也必须无法运行。要实现这一目的首先要有一个与单片机唯一绑定的东西那么这就需要唯一 ID 号了每一片芯片 ID 都不相同并且全世界保存唯一。 研发者由唯一 ID 号通过加密算法计算得到检验码然后向使用者下发。使用者可将此码通过专用编写的上位机把效验码烧写器写入到芯片的 EEPROM 中。 在代码中可以在多个位置对 EEPROM 中的校验码进行比对一致则正常运行否则宕机。 比如在程序有最前面一开始就进行鉴权如果失败则向用户显示“无权限”等信息停止程序运行或是在程序中比较关键的条件分支中这样如果程序被人破译比如反汇编通过修改一些条件判断强行使其正常运行。因为程序中鉴权的地方越多这势必让破解者费一些周折但是也不能过多的地方出现检验码避免被统计识别。 对于唯一 ID 的加密原理如下图 本节讲采用在安全学领域中常见的 TEA 加密算法进行加密和解密。所谓的 TEATiny Encryption Algorithm是一种分组加密算法它的实现非常简单通常只需要很精短的几行代码就可以实现因此非常适合用单片机的加密中。 TEA 算法最初是由剑桥计算机实验室的 David Wheeler 和 Roger Needham 在 1994 年设计 的。TEA 算法使用 64 位的明文分组和 128 位的密钥它使用 Feistel 分组加密框架需要进行 64 轮 迭代。该算法使用了一个神秘常数δ作为倍数它来源于黄金比率以保证每一轮加密都不相同。但 δ的精确值似乎并不重要这里 TEA 把它定义为 δ「(√5 - 1)231」也就是程序中的 0×9E3779B9。 Tea 算法秘钥为 16 字节每次分块处理的数据是 8 个字节两个 32 位数据。加密过程中加法运算和减法运算用作可逆的操作算法轮流使用异或运算提供非线性特性双移位操作使秘钥和数据的所有比特重复地混合最多 16 轮循环就能使数据或密钥的单个比特的变化扩展到接近 32 比特. 因此 ,当循环轮数达到 16 轮以上时 ,该算法具有很强的抗差分攻击能力 ,128 比特密钥长度可以抗击穷举搜索攻击该算法设计者推荐算法迭代次数为 32 轮。 唯一 ID 的加密和解密 下面简单的演示如何对唯一 ID 进行加密搭建加密工程如下图 tea.c 代码如下 #include tea.hvoid encrypt (uint32_t* v, uint32_t* k) {uint32_t v0v[0], v1v[1], sum0, i; /* set up */uint32_t delta0x9e3779b9; /* a key schedule constant */uint32_t k0k[0], k1k[1], k2k[2], k3k[3]; /* cache key */for (i0; i 32; i) { /* basic cycle start */sum delta;v0 ((v14) k0) ^ (v1 sum) ^ ((v15) k1);v1 ((v04) k2) ^ (v0 sum) ^ ((v05) k3); } /* end cycle */v[0]v0; v[1]v1; }void decrypt (uint32_t* v, uint32_t* k) {uint32_t v0v[0], v1v[1], sum0xC6EF3720, i; /* set up */uint32_t delta0x9e3779b9; /* a key schedule constant */uint32_t k0k[0], k1k[1], k2k[2], k3k[3]; /* cache key */for (i0; i32; i) { /* basic cycle start */v1 - ((v04) k2) ^ (v0 sum) ^ ((v05) k3);v0 - ((v14) k0) ^ (v1 sum) ^ ((v15) k1);sum - delta; } /* end cycle */v[0]v0; v[1]v1; } 主函数中设置一组加密密码 key本例简单的设置为 0x1234 作为密码。然后读取设备的唯一 ID 号对唯一 ID 号进行 tea 加密。加密完成后的 ID 号可以作为程序加密的效验码。为了验证加密是否成功再对加密后的唯一 ID 号进行解密。对比读取的唯一 ID 号和解密后的唯一 ID 号如果两者相同则证明加密算法正确。具体代码如下所示 #include stdbool.h #include stdint.h #include stdio.h #include app_uart.h #include app_error.h #include nrf_delay.h #include nrf.h #include bsp.h #if defined (UART_PRESENT) #include nrf_uart.h #endif #if defined (UARTE_PRESENT) #include nrf_uarte.h #endif #include tea.h//#define ENABLE_LOOPBACK_TEST /** if defined, then this example will be a loopback test, which means that TX should be connected to RX to get data loopback. */#define MAX_TEST_DATA_BYTES (15U) /** max number of test bytes to be used for tx and rx. */ #define UART_TX_BUF_SIZE 256 /** UART TX buffer size. */ #define UART_RX_BUF_SIZE 256 /** UART RX buffer size. */void uart_error_handle(app_uart_evt_t * p_event) {if (p_event-evt_type APP_UART_COMMUNICATION_ERROR){APP_ERROR_HANDLER(p_event-data.error_communication);}else if (p_event-evt_type APP_UART_FIFO_ERROR){APP_ERROR_HANDLER(p_event-data.error_code);} }#define UART_HWFC APP_UART_FLOW_CONTROL_DISABLED/*** brief Function for main application entry.*/ int main(void) {uint32_t err_code;uint32_t id[2];uint32_t key[]{0x1234,0x1234,0x1234,0x1234}; //密码id[0]NRF_FICR-DEVICEID[0]; //读取id低31位id[1]NRF_FICR-DEVICEID[1];//读取id高31位const app_uart_comm_params_t comm_params {RX_PIN_NUMBER,TX_PIN_NUMBER,RTS_PIN_NUMBER,CTS_PIN_NUMBER,UART_HWFC,false, #if defined (UART_PRESENT)NRF_UART_BAUDRATE_115200 #elseNRF_UARTE_BAUDRATE_115200 #endif};APP_UART_FIFO_INIT(comm_params,UART_RX_BUF_SIZE,UART_TX_BUF_SIZE,uart_error_handle,APP_IRQ_PRIORITY_LOWEST,err_code);APP_ERROR_CHECK(err_code);while (1){printf(打印id%lx%lx\r\n,id[0],id[1]);encrypt(id,key);//加密工程的验证码printf(加密id%lx%lx\r\n,id[0],id[1]);decrypt(id,key);//解密printf(解密id%lx%lx\r\n,id[0],id[1]);printf(-------------------\r\n);nrf_delay_ms(1000); }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己做网站模版开一家装修公司需要什么条件

java输入/输出流体系中常用的流分类分类字节输入流字节输出流字符输入流字符输出流抽象基类InputStreamOutputStreamReaderWriter访问文件FileInputStreamFileOutputStreamFileReaderFileWriter访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWrit…

成都哪个网站建设比较好建设银行网站打不开别的网站可以用吗

简介 nosql的一种,不是替代传统的sql,而是对传统的sql进行补充增强。redis用于短时间的高访问,其数据是存储在内存上的。 应用场景: 缓存 任务队列 消息队列 分布式锁 Linux系统上安装Redis 运行redis,进入/usr/local/redis-…

北京商业设计网站怎么注册企业视频号

3月19日消息,近日,留学生在线付费平台易思汇宣布已在3月份完成由信中利投资的近亿元B轮融资。 易思汇联合创始人高宇同表示,本轮融资将主要用于留学生信用卡、留学家庭金融商城等新产品布局,以及扩大团队和市场投入。 易思汇成立…

服务器安装完面板怎么做网站应聘网

文化是人类在发展的历史长河中淘洗出来的智慧结晶,随着人类社会的进步和变迁,经历了从口口相传到互联网等不同历史时代的传承和创新。在数字技术飞速发展的当今,区块链技术为文化的创新与传承提供了全新的空间和方式,使其得以在新…

网站开发人员岗位要求招聘平面设计

【六】继承与面向对象设计 条款32 : 确保public继承是"is a"的关系 Item 32: Make sure public inheritance models “is-a”. C面向对象程序设计中,最重要的规则便是:public继承应当是"is-a"的关系。当Derived public继…

广州有做网站的公司吗wordpress如何换内页模板

一、环境搭建 二、影响版本 三、构造payload Authorization: Digest usernameadmin 四、抓包获取sesion 五、修改数据包、认证头 记得设置用户名 六、漏洞存在特征(Gigest)

佛山市城市建设档案馆网站百度点击软件找名风

方法1:使用aux_source_directory命令 aux_source_directory命令用于查找指定目录下的所有源文件,并将文件列表存储到一个变量中。这种方法简单易用,适合于源文件位于单一目录下的情况。 基本语法如下: aux_source_directory(<dir> <variable>)<dir>:…

免费asp网站程序下载集团公司成立条件

TFT液晶显示器件是指在液晶显示器件的每个像素上都连接一个薄膜场效应晶体管。这个场效应管制作在液晶显示器件的玻璃上。每个场效应管独立驱动一个像素&#xff0c;从而可以实现高速度、高亮度、高对比度的显示效果。 TFT液晶显示器件的驱动特性取决于场效应管的工作特性。场效…

北京网站优化解决方案重庆做网站熊掌号

操作环境说明&#xff1a;两台服务器使用相同的Redhat 5.5内核版本为&#xff1a;2.6.18-194.el5在主库(primary database)中提前安装好了Oracle 11gR2软件&#xff0c;通过DBCA创建了数据库&#xff0c;实例名为PRIMARY备库(standby database)中只安装了Oracle 11gR2软件&…

建设项目环境影响网站免费crm客户管理软件

高度平衡二叉搜索树 AVL树的概念1.操作2.删除3.搜索4.实现描述 AVL树的实现1.AVL树节点的定义2.AVL树的插入3.AVL树的旋转3.1 新节点插入较高右子树的右侧---右右:左单旋3.2 新节点插入较高左子树的左侧---左左:右单旋3.3 新节点插入较高左子树的右侧---左右&#xff1a;先左单…

公司门户网站是什么17网一起做网店潮汕

宋仕强论道之华强北自组织和激励模式&#xff08;十四&#xff09;: 为什么一个小小深圳市华强北我宋仕强就讲这么久呢&#xff0c;听说玄奘大和尚刚出道时在洛阳的白马寺讲经&#xff0c;一个“悟”字就讲了三个月。一个事物有他的复杂性和多样性&#xff0c;从自然科学和社会…

网站访问统计js代码百度资讯

一、缓存双写一致性 如果redis中有数据&#xff1a;需要和数据库中的值相同。如果redis中没有数据&#xff1a;数据库中的值要是最新值&#xff0c;且准备回写redis。只读缓存。读写缓存&#xff1a;①、同步直写策略&#xff1a;写数据库后也同步写redis缓存&#xff0c;缓存…

专业高端网站建设服务公司做网站建设公司起名

4 、 浏览器操作 4.1 浏览器最大化 Webdriver 打开浏览器后&#xff0c;默认不是最大化&#xff0c;如果需要界面最大化&#xff0c;需要通过 maximize_window()方法来实现&#xff0c;代码如下&#xff1a; maximize_window()方法是Selenium WebDriver提供的一个方法&#xf…

家电企业网站推广方案标书制作教程全过程

一、酒店 PMS&#xff08;&#xff09;会员系统 1. 客户关系管理&#xff1a;帮助酒店有效地管理会员信息&#xff0c;包括个人资料、消费记录、偏好等&#xff0c;从而更好地了解会员需求&#xff0c;提供个性化的服务和优惠。 2. 会员忠诚度提升&#xff1a;通过积分、折扣、…

免费网站推广产品wordpress无法访问首页

欧几里得算法 只需要记住一个公式&#xff08;不需要推导&#xff0c;这就是数论的基础知识&#xff09;&#xff1a; step1&#xff1a; 判断小括号内右边的数字 b 是否为0&#xff0c;如果为0&#xff0c;输出小括号左边的数字 a &#xff0c;就是一开始要求的两个数的最大…

民治做网站公司discuz网站建设

起因 七月份要去某厂报道了&#xff0c;异地租房的时候发现想租一个有公司班车的地方&#xff0c;却不知道哪里有班车。辗转流传出班车手册后发现搜索实在是太不方便了&#xff0c;于是有了一个主义&#xff0c;想做一个可以搜索房子地址&#xff0c;找出附近班车点&#xff08…

网站运营建设的培训班wordpress flash 插件

视频1&#xff1a;https://live.csdn.net/v/182207 视频2&#xff1a;https://live.csdn.net/v/182208 视频3&#xff1a;https://live.csdn.net/v/182209

茶的网站制作网站建设360

numpy中表示向量和矩阵乘法的有四种"*"、outer、dot、multiply。1、关于 "*" 的用法"*" 也为对于元素的乘积&#xff0c;但是 "*" 作为乘法运算时&#xff0c;必须满足 numpy 的 broadcasting(广播) 的原则 &#xff0c;当两个矩阵相乘…

asp网站代码 部分封装一个网站需要几个人做

1. 引言 在Spring框架中&#xff0c;类加载机制是一个至关重要的环节&#xff0c;关系到Spring容器如何动态地加载、解析和管理应用程序中的类。其中&#xff0c;“准备”阶段作为类加载过程中的一个关键步骤&#xff0c;对于理解整个类加载机制具有重要意义。本文将对Spring类…

素材模板网站网络销售公司经营范围

文章目录 前言Chat2DB介绍Chat2DB地址下载安装 Chat2DB配置Chat2DB使用1、自然语言转sql2. SQL解释3. SQL优化4. SQL转换 写在最后 前言 随着人工智能的发展&#xff0c;各行各业都出现了不少基于AI的工具来提升工作效率。就连国内的各个大厂也都在基于大模型开发自己的产品线…