区块链-椭圆曲线加密生成公钥

椭圆曲线加密法:http://www.javashuo.com/article/p-ufmqlzjk-es.html加密

目录:http://www.javashuo.com/article/p-nitsjfvy-ey.html.net

先阅读上面那篇椭圆曲线加密法文章。3d

http://www.javashuo.com/article/p-zuxtgtfk-gp.html中说公钥是一个随机数也就是私钥,经过椭圆曲线加密后称为公钥。以下图:blog

以一个随机生成的点k,将其与椭圆曲线上的点G相乘(这个相乘不是普通上的数学相乘,而是密码学上的相乘,具体看http://www.javashuo.com/article/p-ufmqlzjk-es.html)得到曲线上的另一点,这个点也就是相对应的公钥K。get

                                             K = k * G,其中K是公钥,k是私钥,G是椭圆曲线上的生成点。数学

生成点是secp256k1标准的一部分,比特币密钥的生成点都是相同的。用户的生成点是相同的,一个私钥k乘以G将获得相同的公钥K。k和K之间的关系是固定的,但只能单向运算,即从k获得K。class

K = 1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD  * G比特币

有椭圆曲线加密法知道,若是给定椭圆曲线一点G,能够求出2G(G+G),3G(2G+G)····。当给出G时,已知x,求出xG并不困难,可是反之,已知xG时,求x时很是困难的。 随机数

公钥K被定义为一个点:密码

K=(x,y)

其中,
x=F028892BAD7ED57D2FB57BF33081D5CFCF6F9ED3D3D7F159C2E2FFF579DC341A y=07CF33DA18BD734C600B96A72BBC4749D5141C90EC8AC328AE52DDFE2E505BDB

以上就是公钥的生成。

参考《精通比特币》