ECC 加密算法入门介绍
同 RSA(Ron Rivest,Adi Shamir,Len Adleman 三位天才的名字)一样,ECC(Elliptic Curves
Cryptography,椭圆曲线密码编码学)也属于公开密钥算法。目前,国内详细介绍 ECC 的公开文献并不多
(反正我没有找到)。有一些简介,也是泛泛而谈,看完后依然理解不了 ECC 的实质(可能我理解力太差)。
前些天我从国外网站找到些材料,看完后对 ECC 似乎懵懂了。于是我想把我对 ECC 的认识整理一下,与大
家分享。当然 ECC 博大精深,我的认识还很肤浅,文章中错误一定不少,欢迎各路高手批评指正,小弟我
洗耳恭听,并及时改正。文章将采用连载的方式,我写好一点就贴出来一点。本文主要侧重理论,代码实
现暂不涉及。这就要求你要有一点数学功底。最好你能理解 RSA 算法,对公开密钥算法有一个了解。《近世
代数基础》《初等数论》之类的书,最好您先翻一下,这对您理解本文是有帮助的。别怕,我尽量会把语言
通俗些,希望本文能成为学习 ECC 的敲门砖。
一、从平行线谈起。
平行线,永不相交。没有人怀疑把:)不过到了近代这个结论遭到了质疑。平行线会不会在很远很远
的地方相交了?事实上没有人见到过。所以“平行线,永不相交”只是假设(大家想想初中学习的平行公
理,是没有证明的)。既然可以假设平行线永不相交,也可以假设平行线在很远很远的地方相交了。即平行
线相交于无穷远点 P∞(请大家闭上眼睛,想象一下那个无穷远点 P∞,P∞是不是很虚幻,其实与其说数
学锻炼人的抽象能力,还不如说是锻炼人的想象力)。给个图帮助理解一下:
直线上出现 P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相
交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。
以下是无穷远点的几个性质。
▲直线 L 上的无穷远点只能有一个。
(从定义可直接得出)
▲平面上一组相互平行的直线有公共的无穷远点。
(从定义可直接得出)
▲ 平面上任何相交的两直线 L1,L2 有不同的无穷远点。
(否则 L1 和 L2 有公共的无穷远点 P ,则 L1 和 L2 有两个交点 A、P,故假设错误。)
▲平面上全体无穷远点构成一条无穷远直线。(自己想象一下这条直线吧)
▲平面上全体无穷远点与全体平常点构成射影平面。
二、射影平面坐标系
射影平面坐标系是对普通平面直角坐标系(就是我们初中学到的那个笛卡儿平面直角坐标系)的扩展。
我们知道普通平面直角坐标系没有为无穷远点设计坐标,不能表示无穷远点。为了表示无穷远点,产生了