![f201ca07601517897bedee6f19b9efae.png](https://i-blog.csdnimg.cn/blog_migrate/8b8cff329ac860a5e0ebda5775aaa3eb.jpeg)
椭圆曲线密码学(Elliptic Curve Cryptography, ECC),又称椭圆曲线密码体制、椭圆曲线加密算法等。椭圆曲线加密算法在比特币、区块链领域有着广泛的应用。
本文先回顾了椭圆、离散对数、离散对数问题(DLP)、数论等基本概念;接着引出椭圆曲线、有限域、有限域加法法则(给出Python代码实现)、椭圆曲线离散对数问题(ECDLP)、ELGAMAL,EC ELGAMAL;然后基于Python实现了ECC加密解密,并介绍了ECC在比特币(ECDSA、Secp256k1)上的应用;最后对ECC进行总结,并对比了ECC与RSA,指出二者的一些区别。
本文层层推进,从ECC椭圆曲线密码学的概念、原理、公式推导、例子、Python实现、应用等来构建椭圆曲线密码学的完整体系,使读者对ECC有系统概览。文章的目录如下:
一、ECC基础
1、椭圆
2、离散对数
3、数论
二、ECC原理
1、椭圆曲线
2、求解
3、加法法则
4、ECDLP
5、ELGAMAL
6、EC ELGAMAL
三、ECC应用
1、Python实现ECC
2、比特币
四、ECC总结
1、RSA VS ECC
2、密码学
直接上PPT。
![2409d025bb88d96c39cd970c5f357a3f.png](https://i-blog.csdnimg.cn/blog_migrate/4401ed1d0ff8a53370c51cf8bd70488c.png)
一、ECC基础
![c23ef6ad4bba5cc14227ee452cab6209.png](https://i-blog.csdnimg.cn/blog_migrate/41253434c6cd7806ff165e03161c70f1.png)
1、椭圆
介绍椭圆、椭圆参数方程、椭圆周长、椭圆积分是为了引出椭圆曲线而做的基础铺垫。
什么是椭圆?
![79dc5581f17267acaa3547c60a466a27.png](https://i-blog.csdnimg.cn/blog_migrate/5da0a45594a23401403150786dad37d7.jpeg)
什么是椭圆的周长?
![f115fbb60ba0e988d05149104a896759.png](https://i-blog.csdnimg.cn/blog_migrate/00d28f5636443e0b4405773ec6651295.jpeg)
什么是椭圆积分?
椭圆积分丰富内涵可以参考维基百科:
椭圆积分zh.wikipedia.org![5f02b23893070540b79bd9a45e47ce7d.png](https://i-blog.csdnimg.cn/blog_migrate/1afc406aa1ddeeb55b26b2e539e061ad.jpeg)
其中,第二类完全椭圆积分E的定义:
![57412148edf34023ce67e3912a364899.png](https://i-blog.csdnimg.cn/blog_migrate/4de7a2bdb7c6538c271f372bd6da0197.jpeg)
注意:上面推导过程,阐述了为什么叫椭圆曲线。
2、离散对数
介绍离散对数、DLP是为了引出ECDLP椭圆曲线离散对数问题而做的基础铺垫。
什么是离散对数?
![05887a39e3c3218989501747329ecce4.png](https://i-blog.csdnimg.cn/blog_migrate/d19964e33930d004c1b29de578013193.jpeg)
什么是DLP离散对数问题?
离散对数问题(Discrete LogarithmProblem, DLP)。
![f62a6839d3da819f0f6591b6b2cd93d0.png](https://i-blog.csdnimg.cn/blog_migrate/48b28cdc7a758924474f34106007c85b.jpeg)
举个例子说明离散对数问题(DLP)。
![13ecc453d884e1fa194521164de729ee.png](https://i-blog.csdnimg.cn/blog_migrate/b8676487cdf6fdaad0852c5c6b2c3d05.jpeg)
3、数论
群、域、域上四则法则是椭圆密码学的基础,所有的ECC加密解密都是围绕这些基本性质展开的。
什么是阿贝尔群?
![54d64f43e6d2e9d1226c002a4337d83a.png](https://i-blog.csdnimg.cn/blog_migrate/62ab7d0dedf399ee79b82cbd4f02acbe.jpeg)
什么是环?
![6211700bc737fc08b7dde6d5cf6886a3.png](https://i-blog.csdnimg.cn/blog_migrate/ff4d59f5d70c1533c90a6b0d680a9a14.jpeg)
什么是域?
![7c8a492a94dbd470a81d2158981b2de4.png](https://i-blog.csdnimg.cn/blog_migrate/ac5266ec145602b58ed70ec34e57aa6a.jpeg)
什么是域上四则运算?
这是ECC计算的基本原理,是ECC最重要、最重要、最重要的知识点。
![b3810b8adb71b22f29770ac2d94f7661.png](https://i-blog.csdnimg.cn/blog_migrate/d0f5cd7e81e5a99a0b8bdcab93561b54.jpeg)
二、ECC原理
![12f373f3c6b7fd525ae30a6186bc0296.png](https://i-blog.csdnimg.cn/blog_migrate/d9897a5dee65867af118e1184d890cf7.jpeg)
1、椭圆曲线
什么是椭圆曲线