Base58

✍ dations ◷ 2025-10-20 12:34:13 #文件格式,字符编码,数字

Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。
设计Base58主要的目的是:


以下引用自其作者Satoshi Nakamoto在base58.h中的注释:

//// Why base-58 instead of standard base-64 encoding?// - Don't want 0OIl characters that look the same in some fonts and//      could be used to create visually identical looking account numbers.// - A string with non-alphanumeric characters is not as easily accepted as an account number.// - E-mail usually won't line-break if there's no punctuation to break at.// - Doubleclicking selects the whole number as one word if it's all alphanumeric.//

编码

Base58编码可以表示的比特位数为Log258 {\displaystyle \approx } 5.858bit。经过Base58编码的数据为原始的数据长度的 8 5.858 1.37 {\displaystyle {\tfrac {8}{5.858}}\approx 1.37} 倍,稍稍多于Base64的1.33倍。
编码符号表:

由于256不能被58整除,Base58无法像Base64那样转换为8bits的2进制后依次取出6bits就可以快速完成转换。因此,Base58编码算法需要除法运算实现,如果被编码的数据较长,则要用特殊的类来处理大数,在Bitcoin使用了OpenSSL中的BIGNUM:

相关

  • 英国广播公司英国广播公司(英语:British Broadcasting Corporation;缩写:BBC),是英国一家独立运作的公共媒体,亦是全球最大的新闻媒体(按照雇员人数),资金主要来自于英国国民所缴纳的电视牌照费。B
  • 雄烯二醇雄烯二醇(英语:Androstenediol,或称为5-雄烯二醇 5-androstenediol、雄-5-烯-3,17-二醇 androst-4-ene-3,17-diol,缩写A5、Δ5-diol)是一种活性较弱的内源性雄激素,也是由脱氢表雄
  • 对照实验对照实验(英语:control experiment)是在实验中设置比较对象(对照组)的一种科学方法,目的是为了与进行实验的对象(实验组)进行对照,减少实验中不确定的变数带来的影响,以之来显示出实验
  • 高台教高台教(越南语:Đạo Cao Đài/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","M
  • 尼泊尔国王尼泊尔的国王称为拉者,王后称为拉妮,王储称为拉纳。尼泊尔的国王是保护神毗湿奴的化身。2008年5月28日,尼泊尔废除君主政体,建立民主联邦共和国。
  • 山东承宣布政使司山东等处承宣布政使司,简称山东布政司,是明朝在华北平原东部、山东半岛、辽东半岛的一级行政区名,下辖6府15州89县。布政使司衙门驻济南府。大明洪武九年(1376年),太祖高皇帝宣布
  • 独立 (概率论)在概率论里,说两个事件是独立的,直觉上是指一次实验中一事件的发生不会影响到另一事件发生的概率。例如,在一般情况下可以认为连续两次掷骰子得到的点数结果是相互独立的。类似
  • 路易六世 (法兰西)路易六世(胖子)(Louis VI le Gros,1081年12月1日-1137年8月1日),法兰西王国卡佩王朝国王(1108年—1137年在位)。法兰西国王腓力一世与第一任妻子荷兰的伯莎的长子,出生于巴黎。路易六
  • 第二十二德尤塔卢斯军团第二十二德尤塔卢斯军团(英语:Legio XXII Deiotariana)古罗马军队建制名称。约于公元前48年建立并存在至约公元135年。该军团曾先后参加泽拉战役等一系列相关军事活动,具有重要
  • 马尼拉之战 (1570年)马尼拉之战(1570年),是梅尼拉王国酋长拉贾苏拉曼领导的菲律宾人和由马丁·德·戈伊蒂领导的西班牙人军队之间的战争。双方于1570年5月24日在马尼拉进行了战斗,结果西班牙人胜