<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Base58</id>
	<title>Base58 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Base58"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Base58&amp;action=history"/>
	<updated>2026-07-07T13:31:07Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Base58&amp;diff=2280732&amp;oldid=prev</id>
		<title>imported&gt;Dbeef：​extraneous sub tag</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Base58&amp;diff=2280732&amp;oldid=prev"/>
		<updated>2025-01-18T07:59:22Z</updated>

		<summary type="html">&lt;p&gt;extraneous sub tag&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Refimprove|time=2014-01-26T15:48:50+00:00}} &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Base58&amp;#039;&amp;#039;&amp;#039;是用于[[比特幣]]（Bitcoin）中使用的一种独特的编码方式，主要用于产生Bitcoin的[[钱包地址]]。相比[[Base64]]，Base58不使用数字&amp;quot;0&amp;quot;，字母大写&amp;quot;O&amp;quot;，字母大写&amp;quot;I&amp;quot;，和字母小写&amp;quot;l&amp;quot;，以及&amp;quot;+&amp;quot;和&amp;quot;/&amp;quot;符号。&lt;br /&gt;
&lt;br /&gt;
设计Base58主要的目的是：&lt;br /&gt;
# 避免混淆。在某些字体下，数字0和字母大写O，以及字母大写I和字母小写l会非常相似。&lt;br /&gt;
# 不使用&amp;quot;+&amp;quot;和&amp;quot;/&amp;quot;的原因是非字母或数字的字符串作为帐号较难被接受。&lt;br /&gt;
# 没有[[标点符号]]，通常不会被从中间分行。&lt;br /&gt;
# 大部分的软件支持双击选择整个字符串。&lt;br /&gt;
&lt;br /&gt;
以下引用自其作者[[中本聰]]（Satoshi Nakamoto）在base58.h中的注释：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cpp&amp;gt;&lt;br /&gt;
//&lt;br /&gt;
// Why base-58 instead of standard base-64 encoding?&lt;br /&gt;
// - Don&amp;#039;t want 0OIl characters that look the same in some fonts and&lt;br /&gt;
//      could be used to create visually identical looking account numbers.&lt;br /&gt;
// - A string with non-alphanumeric characters is not as easily accepted as an account number.&lt;br /&gt;
// - E-mail usually won&amp;#039;t line-break if there&amp;#039;s no punctuation to break at.&lt;br /&gt;
// - Doubleclicking selects the whole number as one word if it&amp;#039;s all alphanumeric.&lt;br /&gt;
//&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 编码 ==&lt;br /&gt;
一個Base58&amp;quot;字元&amp;quot;可以表示的位元數為Log&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;58&amp;lt;math&amp;gt;\approx&amp;lt;/math&amp;gt;5.858 bits。經過Base58編碼的數據為原始的數據長度的&amp;lt;math&amp;gt;\tfrac{8}{5.858}\approx1.37&amp;lt;/math&amp;gt;倍，稍微多於Base64的1.33倍。&lt;br /&gt;
&lt;br /&gt;
編碼符號表：&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!scope=&amp;quot;col&amp;quot;| 编码 !!scope=&amp;quot;col&amp;quot;| 字符&lt;br /&gt;
|rowspan=&amp;quot;18&amp;quot;|  &lt;br /&gt;
!scope=&amp;quot;col&amp;quot;| 编码 !!scope=&amp;quot;col&amp;quot;| 字符&lt;br /&gt;
|rowspan=&amp;quot;18&amp;quot;|  &lt;br /&gt;
!scope=&amp;quot;col&amp;quot;| 编码 !!scope=&amp;quot;col&amp;quot;| 字符&lt;br /&gt;
|rowspan=&amp;quot;18&amp;quot;|  &lt;br /&gt;
!scope=&amp;quot;col&amp;quot;| 编码 !!scope=&amp;quot;col&amp;quot;| 字符&lt;br /&gt;
|-&lt;br /&gt;
|  0 || 1 || 16 || H || 32 || Z || 48 || q&lt;br /&gt;
|-&lt;br /&gt;
|  1 || 2 || 17 || J || 33 || a || 49 || r&lt;br /&gt;
|-&lt;br /&gt;
|  2 || 3 || 18 || K || 34 || b || 50 || s&lt;br /&gt;
|-&lt;br /&gt;
|  3 || 4 || 19 || L || 35 || c || 51 || t&lt;br /&gt;
|-&lt;br /&gt;
|  4 || 5 || 20 || M || 36 || d || 52 || u&lt;br /&gt;
|-&lt;br /&gt;
|  5 || 6 || 21 || N || 37 || e || 53 || v&lt;br /&gt;
|-&lt;br /&gt;
|  6 || 7 || 22 || P || 38 || f || 54 || w&lt;br /&gt;
|-&lt;br /&gt;
|  7 || 8 || 23 || Q || 39 || g || 55 || x&lt;br /&gt;
|-&lt;br /&gt;
|  8 || 9 || 24 || R || 40 || h || 56 || y&lt;br /&gt;
|-&lt;br /&gt;
|  9 || A || 25 || S || 41 || i || 57 || z&lt;br /&gt;
|-&lt;br /&gt;
| 10 || B || 26 || T || 42 || j ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| 11 || C || 27 || U || 43 || k ||   ||&lt;br /&gt;
|-&lt;br /&gt;
| 12 || D || 28 || V || 44 || m ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 13 || E || 29 || W || 45 || n ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 14 || F || 30 || X || 46 || o ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 15 || G || 31 || Y || 47 || p ||  ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
由於256不能被58所整除，Base58無法像Base64那樣子轉換為8位元的二進位後依次取出6位元，就可以快速完成轉換；因此，Base58編碼演算法需要除法運算實現。如果被編碼的數據較長，則要用特殊的class來處理大數，在Bitcoin使用了[[OpenSSL]]中的BIGNUM：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cpp&amp;gt;&lt;br /&gt;
    code_string = &amp;quot;123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz&amp;quot;;&lt;br /&gt;
    x = convert_bytes_to_big_integer(hash_result);&lt;br /&gt;
&lt;br /&gt;
    output_string = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    while(x &amp;gt; 0) &lt;br /&gt;
    {&lt;br /&gt;
        (x, remainder) = divide(x, 58);&lt;br /&gt;
        output_string.append(code_string[remainder]);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    repeat(number_of_leading_zero_bytes_in_hash)&lt;br /&gt;
    {&lt;br /&gt;
        output_string.append(code_string[0]);&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    output_string.reverse();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 外部链接 ==&lt;br /&gt;
* http://www.bitcoin.org {{Wayback|url=http://www.bitcoin.org/ |date=20141031103011 }}&lt;br /&gt;
* https://en.bitcoin.it/wiki/Base58Check_encoding {{Wayback|url=https://en.bitcoin.it/wiki/Base58Check_encoding |date=20140209145132 }}&lt;br /&gt;
&lt;br /&gt;
== 参见 ==&lt;br /&gt;
* [[Base64]]&lt;br /&gt;
&lt;br /&gt;
{{Data Exchange}}&lt;br /&gt;
&lt;br /&gt;
[[Category:文件格式]]&lt;br /&gt;
[[Category:字符编码]]&lt;br /&gt;
[[Category:数字]]&lt;br /&gt;
[[Category:比特幣]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Dbeef</name></author>
	</entry>
</feed>