ECDH的密钥交换算法

ECDH (Elliptic Curve Diffie-Hellman) 是一种密码学协议,用于在两个通信方之间建立共享密钥。它基于椭圆曲线加密算法,使用离散对数问题的困难性来保证密钥交换的安全性。

ECDH 协议的步骤如下:

1. 双方选择一个公开的椭圆曲线以及该曲线上的基点。
2. 双方各自生成一对私钥和公钥。私钥是一个随机选择的整数,在曲线上进行运算。公钥是私钥乘以基点得到的结果。
3. 双方交换各自的公钥。
4. 双方使用对方的公钥和自己的私钥计算一个共享密钥。计算方法是使用对方的公钥乘以自己的私钥得到的结果。
5. 双方获得了相同的共享密钥,可以用于加密通信。

ECDH 协议具有以下特点:

- 它提供了一种安全的密钥交换机制,即使在公开信道上交换公钥也不会泄露私钥信息。
- 它的计算复杂度相对较低,使用椭圆曲线加密算法可以在相对较短的密钥长度下达到与传统非对称加密算法相当的安全性。
- 它适用于各种环境,包括嵌入式设备和移动设备等资源有限的场景。

下面我们基于OpenSSL的提供加密算法下模拟服务器和客户端如何派生共享密钥

#include <stdio.h>
#include <string.h>
#include <openssl/ec.h>
#include <openssl/ecdh.h>
#include <openssl/evp.h>
#include <openssl/rand.h>

#define SYMMETRIC_KEY_SIZE  16 // 128 bits

void handle_error(void)
{
    //printf("An error occurred.\n");
    ERR_print_errors_fp(stderr);
    exit(1);
}

void 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向工程应用:市面上的一些密码学课程和密码学的书籍,很多都是从考证出发,讲解算法原理并不面向工程应用,而我们现在缺少的是工程应用相关的知识,本课程从工程应用出发,每种技术都主要讲解其在工程中的使用,并演示工程应用的代码。 从零实现部分算法: 课程中实现了base16编解码 ,XOR对称加解密算法,PKCS7 pading数据填充算法,通过对一些简单算法的实现,从而加深对密码学的理解。理论与实践结合: 课程如果只是讲代码,同学并不能理解接口背后的原理,在项目设计中就会留下隐患,出现错误也不容易排查出问题。如果只讲理论,比如对密码学的一些研究,对于大部分从事工程应用的同学并没有必要,而是理论与实践结合,一切为了工程实践。代码现场打出: 代码不放在ppt而是现场打出,更好的让学员理解代码编写的逻辑,老师现场敲出代码正是展示出了工程项目的思考,每个步骤为什么要这么做,考虑了哪些异常,易学不枯燥: 课程为了确保大部分人开发者都学得会,理解算法原理(才能真正理解算法特性),学会工程应用(接口调用,但不局限接口调用,理解接口背后的机制,并能解决工程中会出现的问题),阅读算法源码但不实现密码算法,,并能将密码学投入到实际工程中,如果是想学习具体的加密算法实现,请关注我后面的课程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值