当前位置:   article > 正文

ECC椭圆密码算法c语言实现,深入浅出椭圆加密算法ECC

c语言ecc

前言

同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。RSA算法是基于大整数因子分解问题(IFP),ECC算法是基于椭圆曲线上离散对数计算问题(ECDLP)。

ECC加密算法

1.从椭圆曲线说起

要想理解ECC,那么椭圆曲线一定是一个不能回避的问题。不过请放心,并不需要了解很多,够用即可,甚至很多细节也都不用深究。椭圆曲线其实是一类曲线,而且并不像其名字所说的那样,它和我们高中所学的椭圆公式并不一样。

一条椭圆曲线是在射影平面上满足方程 Y^2^Z+a~1~XYZ+a~3~YZ^2^=X^3^+a~2~X^2^Z+a~4~XZ^2^+a~6~Z^3^所有点的集合,且曲线上的每个点都是非奇异(或光滑)的。

是不是看着像天书?确实是的,因为我其实并没有介绍里面的名词比如射影平面,因为我们不需要了解那么多,因为并不是所有的椭圆曲线都适用与加解密。在密码学中,也只用到椭圆曲线的子集如y^2^=x^3^+ax+b,这是最简单的一种,而且我们使用高中数学也能明白其图像长什么样子。

其图像如下所示:

985655a64f4a50e660e31a7c6c9623e4.png

从上图中,我们可以看到,这条曲线关于x轴对称(但是要注意,这只是一类特殊的椭圆曲线),并且每一点都有切线。下面就基于这一类椭圆曲线描述一系列定义和性质。

首先,我们还需要定义一些小小的特殊成分,正如同在小学数学中我们有零,在初中数学平面直角坐标系中我们有原点一样,我们这里也有一个特殊的点无穷远点 O∞并称为零元,你可以顾名思义想象它在哪里,显然我们画不出来,但是想象不出来也没关系(虚数i大家也难以想象出来吧),我们只需要会运算就可以。

接着需要基于这个曲线定义一些运算,最重要的无疑是加法࿰

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/731274
推荐阅读
相关标签
  

闽ICP备14008679号