zoukankan      html  css  js  c++  java
  • 私钥、公钥和地址

    私钥、公钥和地址是如何生成的?

    大体来说,地址的生成的流程是:私钥 -> 公钥 -> 地址。因此地址的生成需要三步:
    1. 生成一个随机的私钥(32字节)
    2. 通过私钥生成公钥(64字节)
    3. 通过公钥得到地址(20字节)

    私钥的生成

    私钥是一组64位的16进制字符,通过私钥我们能够访问一个账户。以太坊的私钥生成是通过secp256k15曲线生成的,secp256k1是一个椭圆曲线算法,比特币使用的也是相同的曲线算法。

    通过OpenSSL6我们可以生成一个椭圆曲线私钥:

    $ openssl ecparam -name secp256k1 -genkey -noout
    -----BEGIN EC PRIVATE KEY-----
    MHQCAQEEICGlTPPQInj0R/jaa7+bjF1twiR3RDLdOChSq98L5FmWoAcGBSuBBAAK
    oUQDQgAERynScthXq2n4Ahkfp08s/QNogZEtVCfQE/XTvpjsnIeQEZGJIOb+Liyl
    uF8PIerBE1CjvCs5LLU+fZz+B31+Bg==
    -----END EC PRIVATE KEY-----


    公钥的生成

    其实,通过OpenSSL我们可以同时得到私钥和公钥:

    $ openssl ecparam -name secp256k1 -genkey -noout | openssl ec -text -noout
    read EC key
    Private-Key: (256 bit)
    priv:
    3f:64:bb:20:0a:b5:82:e9:73:03:8a:8b:79:68:62:
    41:8b:98:a7:10:00:fb:50:de:c4:4d:0d:06:3d:a2:
    ed:cd
    pub:
    04:4a:18:c2:c7:40:f4:9a:77:b2:89:e9:27:0c:39:
    94:8b:94:10:a1:b0:c9:81:d9:af:06:8c:06:23:93:
    63:d7:26:82:fd:b0:22:fe:f6:7f:4f:8a:69:58:2f:
    98:3a:b3:94:ab:5f:06:85:4c:25:f3:3d:8e:f1:35:
    2f:e7:fe:50:4d
    ASN1 OID: secp256k1

    地址的生成

    地址是通过对上述的公钥做Keccak-256哈希7,然后取最后的40位16进制字符得到的。我们对上述的公钥做哈希后并取后40位的结果是:0x24602722816b6cad0e143ce9fabf31f6026ec622。得到的该结果就是一个有效的以太坊地址。

  • 相关阅读:
    Redis 数据类型
    Redis 配置
    Redis 安装
    Redis 简介
    MongoDB 自动增长
    MongoDB 固定集合
    IDEA安装
    云市场 > 软件服务 > 建站系统 > 建站模板-官网企业套餐建站模板-官网企业套餐
    腾讯云SSL证书管理
    4-1 创建项目,并了解项目目录下部分文件的作用
  • 原文地址:https://www.cnblogs.com/ahuo/p/9479531.html
Copyright © 2011-2022 走看看