椭圆加密算法简介

灌水乐园
0 537

本文为灌水贴,不讨论椭圆曲线的数学部分,简单的说明一下密码学中如何使用椭圆曲线的特性。首先每条曲线都有一个点G,然后椭圆曲线具备以下特性:

    x * G = y

    知道G和y无法反推x的值


密码学基本上都用利用这个特性,比如私玥就是一个单纯的随机数D,然后公钥(P)就是D*G。接下来我们大致解释一下椭圆曲线的算法流程,非常简单,首先讨论加密:

    假设明文为m,m的长度为len,生成一个随机数k,得到p1 = k * G,p2 = k * P,然后根据p1和p2得到一个长度为len的数据t,然后将t和m异或得到密文。

    加密的结果就是p1和密文的结合(实际上还会有一些校验信息)'

    很浅显的道理如果没有私玥D,是没法得到数据t的。

解密的流程就更加简单了,p2 = p1 * D,然后利用p1和p2计算出t,然后将t和密文异或就得到了明文m。