数据结构和算法
文章平均质量分 89
deepwater_zone
嵌入式开发、学习交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ECDH和数字签名
ECDH和数字签名是两种互补的密码学技术,分别解决不同安全问题。ECDH用于安全密钥协商,确保通信双方生成共享密钥以实现保密性;而数字签名(如ECDSA)则用于身份认证和完整性验证,防止中间人攻击。在实际应用中(如TLS协议),二者常协同工作:ECDH建立会话密钥,数字签名验证通信方身份,共同构建完整的安全通信体系。它们基于相同的椭圆曲线数学基础,但功能分工明确,缺一不可。原创 2025-08-31 01:26:27 · 1086 阅读 · 0 评论 -
数字签名 digital signature
数字签名是一种基于非对称加密技术的安全机制,用于验证信息的真实性、完整性和不可否认性。它通过私钥签名和公钥验证两个步骤实现:发送方先用哈希函数处理原始消息生成摘要,再用私钥加密生成签名;接收方用公钥解密签名得到摘要,并与重新计算的摘要对比验证。该方法解决了信息认证、防篡改和防抵赖三大安全问题,其核心优势在于加密效率高(仅处理哈希摘要)且适用性强。原创 2025-08-31 00:10:04 · 1161 阅读 · 0 评论 -
ECDH (椭圆曲线迪菲-赫尔曼密钥交换)
ECDH (Elliptic Curve Diffie-Hellman) 是一种基于椭圆曲线密码学(ECC)的密钥协商协议。它允许两个通信方在不安全的信道上,通过交换公开信息,独立地推导出一个相同的共享秘密该共享秘密通常作为对称加密算法(如AES)的密钥,用于加密后续的通信内容。其安全性依赖于椭圆曲线离散对数问题(ECDLP) 的计算困难性:已知椭圆曲线上的点G和k * G,计算私钥k在计算上是不可行的。原创 2025-08-30 08:06:49 · 1131 阅读 · 0 评论 -
非对称加密(RSA、ECC、Diffie-Hellman)
非对称加密技术采用公钥和私钥配对机制,在嵌入式系统中具有重要应用价值。该技术基于单向函数数学原理,核心算法包括RSA、ECC和Diffie-Hellman密钥交换等。RSA通过大质数运算实现加密解密,ECC则在相同安全级别下使用更短密钥。在嵌入式领域,非对称加密被广泛应用于安全启动验证、TLS/SSL安全通信和数字身份认证等场景,如通过公钥验证固件签名、建立安全连接通道等。相比对称加密,非对称加密解决了密钥分发难题,但计算效率较低,常与对称加密结合使用以兼顾安全性和性能。原创 2025-08-28 00:27:14 · 960 阅读 · 0 评论 -
SHA-256加密算法
预处理填充:对输入消息进行填充,使其长度模512等于448。填充位为1后跟多个0。添加长度:在填充后的消息后附加原始消息长度的64位表示(大端序)。初始化哈希值:初始化8个32位的初始哈希值(h0到h7),这些值源于前8个质数的平方根的小数部分的前32位。处理数据块:对每个512位数据块进行64轮循环处理:消息调度:从当前数据块扩展生成64个32位的消息字(Wt)。压缩函数:使用两个非线性函数(Ch, Maj)和两个Sigma函数(∑0, ∑1)进行多轮计算。循环更新。原创 2025-08-26 15:52:04 · 1516 阅读 · 0 评论 -
MD5校验算法
填充:对输入消息进行填充,使其长度模512等于448添加长度:在填充后的消息后附加原始消息长度的64位表示初始化变量:初始化4个32位的链接变量(A, B, C, D)处理数据块:对每个512位数据块进行4轮共64步的处理每轮使用不同的非线性函数(F, G, H, I)每步使用不同的常数和左循环移位操作输出结果:将最终的A, B, C, D连接起来形成128位摘要认清定位:MD5是校验算法,不是加密算法,且已不再安全。明确用途:仅用于非安全关键的数据完整性验证(如固件升级包校验)。原创 2025-08-26 15:48:15 · 1006 阅读 · 0 评论 -
AES加密算法(ECB、CBC、CTR、GCM)
AES(高级加密标准)是一种对称分组密码算法,使用相同密钥进行加密和解密,数据块长度为128位。它提供三种密钥规格(128/192/256位),通过多轮加密(10/12/14轮)确保安全性。核心加密过程包括字节替换、行移位、列混合和轮密钥加等操作。在嵌入式开发中,建议优先选择支持硬件AES加速的MCU,并根据场景选用CBC或CTR等工作模式。典型实现包含密钥扩展、S盒变换和伽罗瓦域乘法等核心算法模块,其中AES-128已能满足大多数嵌入式应用的安全需求。原创 2025-08-26 15:08:53 · 1176 阅读 · 0 评论 -
最常用的排序:快速排序(递归实现)
快速排序算法如下:#include <stdio.h>int a[101] ={ 0, 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 };int n = 10; //定义全局变量,这两个变量需要在子函数中使用void quicksort(int left, int right){ int i, j, t, temp; if (left >...原创 2019-06-23 23:58:22 · 428 阅读 · 0 评论 -
二分法查找(非递归实现)
二分法查找(非递归实现)原创 2020-05-31 22:41:07 · 405 阅读 · 0 评论 -
CRC16算法
循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。在计算机网络通信中运用CRC校验时相对于其他校验方法就有一定的优势。CRC可以高比例的纠正信息传输过程中的错误,可以在极短的时间内完成数据校验码的计算,并...原创 2020-04-28 11:36:41 · 4023 阅读 · 0 评论 -
字节和BCD码 互转算法
/** * @brief Converts a 2 digit decimal to BCD format. * @param value: Byte to be converted. * @retval Converted byte */uint8_t byteToBcd(uint8_t value){ uint8_t bcd_high = 0; while (v...原创 2020-04-24 15:26:00 · 2688 阅读 · 0 评论
分享