1zEAtvzgh3GXRq4M9DySzLhamUpBEZpHY
Yea thanks !
A single family name in Russian: Epёмeнкo.
can be spelled as:
Yeremenko
Yuromenko
Eremenko
Eromenko
Juromenko
or any combination thereof...
of course it may be possible to use Unicode to write in own language. But for now I wanted to avoid spelling issues.
source of randomness:
Some users keep it stable (I use GMail for 10 years), but other change email every year.
Same for phone numbers.
My friend, Uzi, changed 8 (!!) phone numbers in two years. But other friend, didn't change in a decade.
With this, it may be difficult to remember what you had 20 years ago.
this is something I cannot trust, as my password may leak straight into a hacker's hands. (unless it is a simple HTML, that I can download into an offline PC).
hackers can silently replace the generator HTML with something... so no Web version I won't trust very much. For this reason, I store only trivial amounts of BTC in blockchain.info wallet.
And after Diginotar bankruptcy I don't trust SSL/HTTPS either. (my bank is insured by the government).
In my opinion blockchain-based technology might replace SSL/X.509 certificates in the future.
Username: CJYP
Password: H(Passphrase + salt), where H is the algorithm your program uses
Since we're not in the future where we can use blockchain-based technology to log in, we have to deal with the reality that people use weak passwords that then get guessed.
Another great idea: is to somehow store key salting hash on blockchain itself. (Ethereum allows to do this easily... but I dunno how-to store anything on the Bitcoin blockchain. Although a few experts were able to embed a few images, there is no how-to for python devs)
Obviously only connected clients can do that, but from desktop.
This will allow to store long, 128-bit salts.
As for hashing change .. well I don't know which one is secure.
Litecoin claimed that their hash is ASIC-proof, yet came KNC miner and built a Scrypt-ASIC.
This field needs more research.
-Technologov
But as far as using a hash of hash, you can build dictionaries of hashes that meet certain characteristics.
For example, if you take the average digit of a sha256 sum it will typically be between 7 and 9.
So you can exclude all hashes from your dictionary that are not between 7 and 9, etc. greatly reducing the possible size of your dictionary and increasing the odds of finding a collision.
Try them and their hash.
It's still pretty damn slim, a very large set, but smaller than 2^256 - so that's why you don't want to use a hash of a hash as your private key.
hash of a hash likely has less than 2^256 possibilities, how much less I don't know. Hash of high entropy random data is 2^256 (well, slightly less - I believe the EEC curve bitcoin uses doesn't go all the way to 2^256 but very close)
You want your private key to be a hash of high entropy random data, and that means it is not safe to use something that is easy to remember, even if you stretch it.
Pass phrases are fine for an encrypted wallet because the hacker has to get your wallet first (and then your pass phrase should be salted) but for something where a public address will be in the blockchain, the private key really needs to be a hash of high entropy random data.
Don't use brain wallets. Especially since addresses tend to be single use and should not be used against once you spend from it.
Placing a random salt on the blockchain seems to be an excellent way of increasing the entropy enough (as long as it's different for each user) - but again, I don't understand the math well enough to know for certain if that's enough.