user323: In this answer I found out that Ripple uses a different base58 alphabet from Bitcoin. There aren't many materials on what that alphabet is, but I managed to find this reference:

The base58 dictionary for ripple is: rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

I am wondering - why is Ripple's alphabet so bizarre in comparison to Bitcoin's base58 alphabet:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

I understand that for some branding reasons one would want to put "r" as a letter for 0 and use 0 as network byte for Ripple (thus making every address start with "r"), but the same could've been accomplished by simply shifting the alphabet like so:

rstuvwxyz123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopq

What is the logic behind the odd alphabet letter order?

user3364: I don't know about the rest of the string but I think the leading bytes are ordered that way to make the types of "addresses" be human reconizable.
From a quick look at the source I think the leading characters, rpshnaf map like so:

r = public Ripple address
p = node private
s = Ripple secret
h = ?
n = node public
a = address family generator or seed ?
f = address family generator or seed ?

Of these, wallet owners have seen the r* and s* "addresses" and those running ripple will be have seen the n* and p* ones.

323: <p>In <a href="https://bitcoin.stackexchange.com/a/7599/323">this answer</a> I found out that Ripple uses a different base58 alphabet from Bitcoin. There aren't many materials on what that alphabet is, but I managed to find <a href="https://ripple.com/wiki/Encodings" rel="nofollow noreferrer">this reference</a>:</p>

<blockquote>
  <p>The base58 dictionary for ripple is: rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz</p>
</blockquote>

<p>I am wondering - why is Ripple's alphabet so bizarre in comparison to Bitcoin's base58 alphabet:</p>

<blockquote>
  <p>123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz</p>
</blockquote>

<p>I understand that for some branding reasons one would want to put "r" as a letter for 0 and use 0 as network byte for Ripple (thus making every address start with "r"), but the same could've been accomplished by simply shifting the alphabet like so:</p>

<blockquote>
  <p>rstuvwxyz123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopq</p>
</blockquote>

<p>What is the logic behind the odd alphabet letter order?</p>
 3364: <p>I don't know about the rest of the string but I think the leading bytes are ordered that way to make the types of "addresses" be human reconizable.</p>

<p>From a quick look at the source I think the leading characters, <code>rpshnaf</code> map like so:</p>

<ul>
<li>r = public Ripple address</li>
<li>p = node private</li>
<li>s = Ripple secret</li>
<li>h = ?</li>
<li>n = node public</li>
<li>a = address family generator or seed ?</li>
<li>f = address family generator or seed ?</li>
</ul>

<p>Of these, wallet owners have seen the r* and s* "addresses" and those running ripple will be have seen the n* and p* ones.</p>
