Base58和Base58Check编码

管理员组 夜小白 3月前 86

Base58和Base58Check编码

了解Base58编码之前,先了解Base64编码。

  • Base64是一种基于文本的二进制编码格式,使用26个大写字母、26个小写字母、10个数字、两个符号(+、-),总共64个字符进行编码;
  • Base58是Base64的子集,去掉了Base64中容易产生混淆的字母:0、O、l、I,和"+"、"-"符号,总共58个字符;
  • Base58Check在Base58编码的基础上增加了校验码,比特币和EOS都使用了Base58Check编码。

Base58Check编码流程(encode)

  • 1、计算原码的sha256哈希值;
  • 2、计算第1步结果的sha256哈希值,即sha256(sha256(原码));
  • 3、取第2步前4个字节作为校验码;
  • 4、在原码末尾添加第3步获取的校验码;
  • 5、对第4步的结果进行Base58编码。

Base58Check解码流程(decode)

  • 1、对数据进行Base58解码;

  • 2、取出第一步的最后4个字节,作为校验码;

  • 3、计算第2步结果(没有最后4个字节)的sha256哈希值;

  • 4、计算第3步的sha256哈希值;

  • 5、取第4步结果的前4个字节,与第2步的校验码进行匹配;

  • 6、匹配成功获得解码后的数据。

  • 私钥本质上是随机数,从私钥生成公钥,BTC、ETH、EOS都使用的是椭圆曲线加密算法;

  • type的类型K1和R1,分别表示两种椭圆曲线加密算法:secp256k1、secp256r1;

  • EOS公钥是使用sha256算法生成的hash值和签名来生成的;

还没有人收藏过本帖~
最新回复 (3)
  • 一级用户组 fengzi 3月前
    0 引用 2
    1.  椭圆曲线算法无法用于加解密,可以用于签名;
    2. eos的私钥生成公钥,不是加密,是以基础私钥为参数,算出的secp256k1曲线上的一个点的坐标,舍弃y坐标,在加上前置位,转16进制生成的基础公钥。
    3. eos公钥生成的过程中,并没有涉及到sha256,基础私钥生成基础公钥,涉及到的hash算法是sha1,基础公钥转换成EOS 开头的公钥,涉及到的hash算法是ripemd160。涉及到sha256算法的是原始私钥转换成WIF格式私钥的过程。
  • 管理员组 缘雨 3月前
    0 引用 3
    fengzi 1. 椭圆曲线算法无法用于加解密,可以用于签名; 2. eos的私钥生成公钥,不是加密,是以基础私钥为参数,算出的secp256k1曲线上的一个点的坐标,舍弃y坐标,在加上前置位,转16进制生成的 ...
    真的牛皮,头层皮的那种,我看了一周多的算法,没你一个回帖深!赞
  • 管理员组 夜小白 3月前
    0 引用 4
    fengzi 1. 椭圆曲线算法无法用于加解密,可以用于签名; 2. eos的私钥生成公钥,不是加密,是以基础私钥为参数,算出的secp256k1曲线上的一个点的坐标,舍弃y坐标,在加上前置位,转16进制生成的 ...
    你去看看eos代码吧 
返回