<p>The address is only 160-bits. The public key is 257-bits. So there's no way to go from an address to a public key -- information is missing.</p>

<p>The shortest hash with sufficient security is 160-bits. So Bitcoin uses a 160-bit hash as an address to make the address as short as possible. However, there is no known public key scheme that is sufficiently secure with only 160-bit public keys. So the public key couldn't be used as an account address without making the account longer.</p>

<p>However, the public key is needed to verify a signature. So when you perform a transaction to claim coins sent to an account, you must provide the public key. When validating the transaction, the public key is checked to ensure it has the correct hash (matching the account) and then the signature is checked to ensure it is valid for the transaction and made with the supplied public key. From that point on, the public key corresponding to the address is publicly known.</p>

CC BY-SA 3.0
2013-02-15T11:18:26.330Z
2013-02-15T11:18:26.330Z
David Schwartz
<p>The address is at its most basic just a hash of the public key. The hash functions involved (RIPEMD-160 and SHA256) are cryptographic hash functions. They are often also referred to as one-way functions, which is exactly the reason why you cannot derive the public key from the address.</p>

<p>Oneway functions provide exactly that <code>a = f(pk)</code> so that given <code>a</code> you cannot derive <code>pk</code>.</p>

<p>For this very reason the next transaction claiming the output sent to an address has to not only provide a signature but also the matching public key that, when processed into an address, returns the address in the output.</p>

<p>For more details see the <a href="https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses" rel="noreferrer">address derivation process</a>.</p>

CC BY-SA 3.0
2013-02-15T11:19:51.800Z
2013-02-15T11:19:51.800Z
cdecker
<p>This is my first bitcoin <a href="http://blockexplorer.com/address/1vijay5EABPWSUM3W2SD8KbHWbvHPiBJq" rel="noreferrer">transaction</a>.</p>

<p>Why this transaction doesn't show my public key? help message on the same page says that, </p>

<blockquote>
  <p>It's impossible to determine the public key from a Bitcoin address,
  but if the public key was ever used on the network, it is listed here.</p>
</blockquote>

<p>I was thinking that my address is public key. Is it really impossible to derive public key from address?</p>

<p>other details, blockchain.info <a href="https://blockchain.info/tx/9cc71cb35356094a6a555ea78f3d206e2ce0cead7721c05bcfff2d5cdbbb2a96" rel="noreferrer">transaction</a> &amp; <a href="https://blockchain.info/address/1vijay5EABPWSUM3W2SD8KbHWbvHPiBJq" rel="noreferrer">address</a> details.</p>

<transactions><address><public-key>
Why is it impossible to derive public key from address?
vi.su.
# Why is it impossible to derive public key from address?

(Asked by: username_0 on 2013-02-15)

This is my first bitcoin [transaction](http://blockexplorer.com/address/1vijay5EABPWSUM3W2SD8KbHWbvHPiBJq).

Why this transaction doesn't show my public key? help message on the same page says that,

> It's impossible to determine the public key from a Bitcoin address,
> but if the public key was ever used on the network, it is listed here.

I was thinking that my address is public key. Is it really impossible to derive public key from address?

other details, blockchain.info [transaction](https://blockchain.info/tx/9cc71cb35356094a6a555ea78f3d206e2ce0cead7721c05bcfff2d5cdbbb2a96) & [address](https://blockchain.info/address/1vijay5EABPWSUM3W2SD8KbHWbvHPiBJq) details.

**Tags:** transactions, address, public-key


---

## 2 answers

### Answer by username_2 on 2013-02-15. Score: 7 | Accepted answer

The address is at its most basic just a hash of the public key. The hash functions involved (RIPEMD-160 and SHA256) are cryptographic hash functions. They are often also referred to as one-way functions, which is exactly the reason why you cannot derive the public key from the address.

Oneway functions provide exactly that `a = f(pk)` so that given `a` you cannot derive `pk`.

For this very reason the next transaction claiming the output sent to an address has to not only provide a signature but also the matching public key that, when processed into an address, returns the address in the output.

For more details see the [address derivation process](https://en.bitcoin.it/wiki/Technical_background_of_Bitcoin_addresses).


---

### Answer by username_1 on 2013-02-15. Score: 6

The address is only 160-bits. The public key is 257-bits. So there's no way to go from an address to a public key -- information is missing.

The shortest hash with sufficient security is 160-bits. So Bitcoin uses a 160-bit hash as an address to make the address as short as possible. However, there is no known public key scheme that is sufficiently secure with only 160-bit public keys. So the public key couldn't be used as an account address without making the account longer.

However, the public key is needed to verify a signature. So when you perform a transaction to claim coins sent to an account, you must provide the public key. When validating the transaction, the public key is checked to ensure it has the correct hash (matching the account) and then the signature is checked to ensure it is valid for the transaction and made with the supplied public key. From that point on, the public key corresponding to the address is publicly known.


---

