在之前一篇博客 ECC(Elliptic Curves Cryptography) 椭圆曲线加密原理 简单地阐述了 ECC 加解密的原理。这本篇博客中接着来聊一聊如何使用 OPENSSL 来进行 ECC 加解密。
首先需要明确一点的是:ECC 本身并没有定义一套加解密的方法,它主要作用于密钥交换(ECDHE),与签名认证(ECDSA). 不过后来中国工程师设计定义了一套加密方法,并于近年得到了世界的认可,这就是中国商用(国家标准) SM2 椭圆曲线公钥密码算法 。
一. 基本概念
其实在 openssl 中,椭圆曲线分两种形式,一种是之前讲到的质数域上的椭圆曲线 ,将其称为 $F_p$ 其方程为:

另一种是二进制域,称为 $F_{2^m}$, 其方程为:

在这里只讨论 $F_p$ 相关的内容。
椭圆曲线上的点
椭圆曲线上的点使用 EC_POINT 来表示, 它定义在 ec_locl.h :
struct ec_point_st {
// ...
BIGNUM *X;
BIGNUM *Y;
BIGNUM *Z;
// ...
};



