user21041: I created a paper wallet on coinbase and wanted to import it to coinbase.com. It allowed me to import it by specifying private key only. I was surprised that I didn't have to specify public key as well... is it secure?
I am surely missing here something but the analogy that comes to my mind is ability to log in into someone's gmail account by providing only password and not email. I mean, if that would be possible we could specify "P@ssword" and I'm sure someones has this kind of password to their email, that would let us log in to that account.
Similarily, I could specify some random private key and hope that it's associated with some public address... 
Could you please clarify why my reasoning is not correct and why importing bitcoins by specifying private key only is safe?
Thanks!

user18196: The analogy that you suggest isn't quite accurate because a private/public key pair have a very exact mathematical relation, whereas a username/password have no real relation (except maybe an entry in a database somewhere). 
A private key is essentially a 256 bit number. Using this private key, and an Elliptic Curve library that supports the use of the secp256k1 curve, you can deterministically calculate what the associated public key is. Since a bitcoin address is a hash of the public key, all you really need is the private key and you can calculate everything else to be able to see what transactions resulted in the address being credited/debited coins. That's why coinbase only has you give your private key.

user18441: The short answer is like many other common encryption systems you can create the public key from the private key (and therefore gain access to the contents) but you cant create the private from the public. Therefore you don't need to input the public key because it can be generated from the private key.
As other comments have said, the chances of you guessing/generating a valid private key are essentially nil.

user21044: Unlike email accounts and passwords, in Bitcoin no two public keys can share the same private key because the public key is derived from the private key mathematically.
It's true you could generate private keys at random and check their corresponding public addresses for unspent bitcoins. And if you found any, you could spend them since you'd have the private key. If it was at all feasible to find and spend other users' bitcoins this way, the Bitcoin ledger would be useless. So the set of possible keys was made intentionally enormous as to make such random searching infeasible and pointless even if extremely powerful computers were used to perform these searches for centuries.
Here's a great video on this topic:
http://youtu.be/ZloHVKk7DHk

21041: <p>I created a paper wallet on coinbase and wanted to import it to coinbase.com. It allowed me to import it by specifying private key only. I was surprised that I didn't have to specify public key as well... is it secure?</p>

<p>I am surely missing here something but the analogy that comes to my mind is ability to log in into someone's gmail account by providing only password and not email. I mean, if that would be possible we could specify "P@ssword" and I'm sure someones has this kind of password to their email, that would let us log in to that account.</p>

<p>Similarily, I could specify some random private key and hope that it's associated with some public address... </p>

<p>Could you please clarify why my reasoning is not correct and why importing bitcoins by specifying private key only is safe?</p>

<p>Thanks!</p>
 18196: <p>The analogy that you suggest isn't quite accurate because a private/public key pair have a very exact mathematical relation, whereas a username/password have no real relation (except maybe an entry in a database somewhere). </p>

<p>A private key is essentially a 256 bit number. Using this private key, and an Elliptic Curve library that supports the use of the <code>secp256k1</code> curve, you can deterministically calculate what the associated public key is. Since a bitcoin address is a hash of the public key, all you really need is the private key and you can calculate everything else to be able to see what transactions resulted in the address being credited/debited coins. That's why coinbase only has you give your private key.</p>
 18441: <p>The short answer is like many other common encryption systems you can create the public key from the private key (and therefore gain access to the contents) but you cant create the private from the public. Therefore you don't need to input the public key because it can be generated from the private key.</p>

<p>As other comments have said, the chances of you guessing/generating a valid private key are essentially nil.</p>
 21044: <p>Unlike email accounts and passwords, in Bitcoin no two public keys can share the same private key because the public key is derived from the private key mathematically.</p>

<p>It's true you could generate private keys at random and check their corresponding public addresses for unspent bitcoins. And if you found any, you could spend them since you'd have the private key. If it was at all feasible to find and spend other users' bitcoins this way, the Bitcoin ledger would be useless. So the set of possible keys was made intentionally enormous as to make such random searching infeasible and pointless even if extremely powerful computers were used to perform these searches for centuries.</p>

<p>Here's a great video on this topic:</p>

<p><a href="http://youtu.be/ZloHVKk7DHk" rel="nofollow">http://youtu.be/ZloHVKk7DHk</a></p>
