<p>You're right that public keys are generally unknown until coins are spent from their address, and that until coins are spent only a hash of the public key is published.</p>

<p>While it's technically possible to use bitcoin public keys for the kind of encryption you're imagining, you're the first person I've seen talking about doing so.  The satoshi client has an interface to allow users to sign messages using their private key which others can verify using the associated bitcoin address, but using public keys to encrypt messages which only the holder of the private key can decrypt is something I've never seen.</p>

<p>Notice that signing a message with your private key in the satoshi client <a href="https://github.com/bitcoin/bitcoin/pull/524" rel="nofollow">includes the corresponding public key in the output signature</a>.  This allows the recipient to verify the message.  It's possible that otherwise they wouldn't know the public key, having only the corresponding bitcoin address.</p>

CC BY-SA 3.0
2012-10-08T01:19:32.370Z
Unless encryption is needed for making payments, that will not likely be something added to Bitcoin.  Here's an example of the resistance even to making clear text signing using a Bitcoin address and making it easier to be used for wider / general use: http://bitcointalk.org/index.php?topic=102761.msg1129361#msg1129361
Stephen Gornick
CC BY-SA 3.0
2012-10-06T01:23:59.803Z
2012-10-06T20:01:34.567Z
2012-10-06T20:01:34.567Z
Chris Moore
<p>The publicly shared Bitcoin address is a hash of the public key and nothing more.</p>

<p>The only thing a Bitcoin address shares with public-key infrastructure (PKI) is that it is a type of cryptography and it is shared publicly.  It does not provide the ability to encrypt a message so that only the owner of the private key can decrypt it.</p>

<p>What can be done though, is to combine two technologies to give you what you are looking for.</p>

<p>With the Bitcoin-Qt client, Alice can sign a message that can be verified to have been signed using the private key for a specific address.</p>

<p>So Alice can then use Bitcoin-Qt to sign a message that says "my public key is: 73B7B2F3".  Bob can then use his Bitcoin-Qt client to verify that the message was truly signed by the owner of a certain Bitcoin address.</p>

<p>Bob can then use GPG to encrypt a message to Alice, using Alice's public key that she claimed was hers and thus only Alice can decrypt and read Bob's message.</p>

CC BY-SA 3.0
2012-10-05T23:52:13.763Z
2012-10-08T01:01:47.990Z
2012-10-08T01:01:47.990Z
Stephen Gornick
<p>Since bitcoin addresses are hashes of public keys and not public keys as such, if one wanted to craft a message that could be decrypted by the generator of an address, that can't be done just with an address. But after the generator of an address has spent something that was received there, which requires presenting the public key (or does it?) publicly, is that public key part of the public record so it can be used for direct message encryption?</p>

<p>And is there a standard way to perform such message encryption, analogous to opaque PGP blocks, and supported by UI panels in bitcoin-qt where one can paste blocks of plain (with intended recipient) or ciphertext (directed to one of one's own addresses) and see plaintext or a copyable opaque block?</p>

<address><encryption><message><green-address>
Does the public key associated with an address become part of the public record after it has been used to spend?
david nicol
# Does the public key associated with an address become part of the public record after it has been used to spend?

(Asked by: username_0 on 2012-10-05)

Since bitcoin addresses are hashes of public keys and not public keys as such, if one wanted to craft a message that could be decrypted by the generator of an address, that can't be done just with an address. But after the generator of an address has spent something that was received there, which requires presenting the public key (or does it?) publicly, is that public key part of the public record so it can be used for direct message encryption?

And is there a standard way to perform such message encryption, analogous to opaque PGP blocks, and supported by UI panels in bitcoin-qt where one can paste blocks of plain (with intended recipient) or ciphertext (directed to one of one's own addresses) and see plaintext or a copyable opaque block?

**Tags:** address, encryption, message, green-address


---

## 2 answers

### Answer by username_1 on 2012-10-06. Score: 3

You're right that public keys are generally unknown until coins are spent from their address, and that until coins are spent only a hash of the public key is published.

While it's technically possible to use bitcoin public keys for the kind of encryption you're imagining, you're the first person I've seen talking about doing so. The satoshi client has an interface to allow users to sign messages using their private key which others can verify using the associated bitcoin address, but using public keys to encrypt messages which only the holder of the private key can decrypt is something I've never seen.

Notice that signing a message with your private key in the satoshi client [includes the corresponding public key in the output signature](https://github.com/bitcoin/bitcoin/pull/524). This allows the recipient to verify the message. It's possible that otherwise they wouldn't know the public key, having only the corresponding bitcoin address.

> **Comments:**
> **username_2**: Unless encryption is needed for making payments, that will not likely be something added to Bitcoin.  Here's an example of the resistance even to making clear text signing using a Bitcoin address and making it easier to be used for wider / general use: http://bitcointalk.org/index.php?topic=102761.msg1129361#msg1129361  

---

### Answer by username_2 on 2012-10-05. Score: 2

The publicly shared Bitcoin address is a hash of the public key and nothing more.

The only thing a Bitcoin address shares with public-key infrastructure (PKI) is that it is a type of cryptography and it is shared publicly. It does not provide the ability to encrypt a message so that only the owner of the private key can decrypt it.

What can be done though, is to combine two technologies to give you what you are looking for.

With the Bitcoin-Qt client, Alice can sign a message that can be verified to have been signed using the private key for a specific address.

So Alice can then use Bitcoin-Qt to sign a message that says "my public key is: 73B7B2F3". Bob can then use his Bitcoin-Qt client to verify that the message was truly signed by the owner of a certain Bitcoin address.

Bob can then use GPG to encrypt a message to Alice, using Alice's public key that she claimed was hers and thus only Alice can decrypt and read Bob's message.


---

