<p>The process of going from a Ripple secret to a specific ECDSA private/public key (which you didn't ask about but I included it here anyway) is documented on the <a href="https://ripple.com/wiki/Account_family" rel="nofollow">Account Family</a> wiki page.</p>

<p>From a ECDSA public key, {X,Y}, you do <code>ripemd160(sha256(CompressPoint(X,Y))</code>.
That's then <a href="https://ripple.com/wiki/Encodings" rel="nofollow">encoded in base58</a> (using the Ripple alphabet/dictionary).</p>

<p>You can also look at the <a href="https://github.com/ripple/rippled/blob/develop/src/ripple_data/crypto/CKeyDeterministic.cpp" rel="nofollow">rippled</a> implementation or a <a href="https://godoc.org/bitbucket.org/dchapes/ripple/crypto/rkey#AcctPublicKey.Address" rel="nofollow">Go implementation</a>.</p>

CC BY-SA 3.0
2013-12-16T20:40:09.770Z
2013-12-16T20:40:09.770Z
dchapes
<p>I know it is some combination of sha256 and ripemd160 that is used on the public key component to obtain the Ripple wallet address, but what is the specific algorithm?</p>

<address><ripple><private-key>
What is the algorithm for generating a Ripple address from a ecdsa public key?
Steven Zeiler
# What is the algorithm for generating a Ripple address from a ecdsa public key?

(Asked by: username_0 on 2013-12-16)

I know it is some combination of sha256 and ripemd160 that is used on the public key component to obtain the Ripple wallet address, but what is the specific algorithm?

**Tags:** address, ripple, private-key


---

## 1 answers

### Answer by username_1 on 2013-12-16. Score: 1

The process of going from a Ripple secret to a specific ECDSA private/public key (which you didn't ask about but I included it here anyway) is documented on the [Account Family](https://ripple.com/wiki/Account_family) wiki page.

From a ECDSA public key, {X,Y}, you do `ripemd160(sha256(CompressPoint(X,Y))`.
That's then [encoded in base58](https://ripple.com/wiki/Encodings) (using the Ripple alphabet/dictionary).

You can also look at the [rippled](https://github.com/ripple/rippled/blob/develop/src/ripple_data/crypto/CKeyDeterministic.cpp) implementation or a [Go implementation](https://godoc.org/bitbucket.org/username_1/ripple/crypto/rkey#AcctPublicKey.Address).


---

