ECDSA是Elliptic Curve Digital Signature Algorithm的简称,主要用于对数据创建数字签名。
但是他不是像AES那样对数据进行加密,而是用于确保数据没有被篡改过。
他的原理大致如下:
有一个数学方程,在图上画了一条曲线,然后你在这条曲线上面随机选取了一个点作为你的原点(point of
origin)。接着你产生了一个随机数,作为你的私钥(Private
key),最后你用上面的随机数和原点通过一些复杂的魔法数学方程得到该条曲线上面的第二个点,这是你的公钥(Public key)。
当你想要对一个文件进行签名的时候,你会用这个私钥(随机数)和文件的哈希(一串独一无二的代表该文件的数)组成一个魔法数学方程,这将给出你的签名。签名本身将被分成两部分,称为R和S。为了验证签名的正确性,你只需要公钥(用私钥在曲线上面产生的点)并将公钥和签名的一部分S一起代入另外一个方程,如果这个签名是由私钥正确签名过的数字签名,那么它将给出签名的另外一部分R。简单来说,一个数字签名包含两个数字,R和S,然后你使用一个私钥来产生R和S,如果将公钥和S代入被选定的魔法数学方程给出R的话,这个签名就是有效的。仅仅知道公钥是无法知道私钥或者创建出数字签名。
其中用到的是椭圆方程,如果有兴趣可以自行了解。