Author

Topic: Bitcoin Visual private key generator (Read 2087 times)

hero member
Activity: 714
Merit: 1298
February 14, 2024, 12:42:28 PM
#68
[you should be very careful with the random entropy (use coin)


Yeah, the source of entropy is of main importance for those who create wallets.

For instance, the   low numbers of dice rolls can result in unsafe wallets that can be easily cracked. I think the same will imply to low number of coin flipping as no one can get the guarantee that this process is not biased to some extend.
sr. member
Activity: 443
Merit: 350
January 29, 2024, 04:22:09 PM
#67
Using this you can create your own wallets to store btc???

Yes, you can. But you should be very careful with the random entropy (use coin) and secure internet connection (or use the tool offline).

PS. To be honest if you do not understand what you do, I do not recommend to use this tool.
newbie
Activity: 39
Merit: 0
January 18, 2024, 03:55:43 PM
#66
Using this you can create your own wallets to store btc???
sr. member
Activity: 443
Merit: 350
January 08, 2024, 04:27:16 PM
#65
So it was you who renewed the domain, correct? And what do you mean by registrar saving the domain for you? is that something unusual?

Anyways thank you for such a great service, it really is one of the helpful tools I have ever seen. 😉👏👍

Yes, I renewed the domain. The auto prolongation was active with the registrar (if forget it saves the domain for you but you should pay more). Registrar renewed the domain however suspended to use it before payment.
copper member
Activity: 1330
Merit: 899
🖤😏
January 08, 2024, 04:05:22 PM
#64
So it was you who renewed the domain, correct? And what do you mean by registrar saving the domain for you? is that something unusual?

Anyways thank you for such a great service, it really is one of the helpful tools I have ever seen. 😉👏👍
sr. member
Activity: 443
Merit: 350
January 08, 2024, 01:25:58 PM
#63
If it is really useful for you to have this tool, I can try to upload it and set it on one of my domains.
edit: https://btckeygen.com/ is online again
Of course it is useful, do you know of any other way/ tool, where you could generate any bit of key space with a single tap/ click? This tool is one of the most useful crypto tools in the world. Most of the things I have learned about cryptography is because of this 16×16 grid. Thanks for the offer though.

Thank you so much for your feedback.

Yes, there was a domain issue as I forget to renew it. However thanks to registrar for saving the domain for me  Cheesy
copper member
Activity: 1330
Merit: 899
🖤😏
October 02, 2023, 04:52:05 AM
#62

If it is really useful for you to have this tool, I can try to upload it and set it on one of my domains.



edit: https://btckeygen.com/ is online again

Of course it is useful, do you know of any other way/ tool, where you could generate any bit of key space with a single tap/ click? This tool is one of the most useful crypto tools in the world. Most of the things I have learned about cryptography is because of this 16×16 grid. Thanks for the offer though.
legendary
Activity: 3472
Merit: 3507
Crypto Swap Exchange
October 02, 2023, 03:38:13 AM
#61
Edit: I couldn't find the download zip option, Btw, the button is no longer green, it's been like that for months for me.😉

I just noticed pooya shared the link, but I don't know why it doesn't show the download option for me.

I just downloaded the ZIP file from Github.

Quote
Other than educational use, I have no other use of this tool.

If it is really useful for you to have this tool, I can try to upload it and set it on one of my domains.



edit: https://btckeygen.com/ is online again
copper member
Activity: 1330
Merit: 899
🖤😏
October 01, 2023, 01:38:35 AM
#60
Thanks guys, I did this with bitaddress as well I just forgot it, my main issue is with some apps showing ads when in use, so I turn off internet and when switch between open tabs, if I'm offline the page of btckeygen  refreshes by itself and nothing works, until I go online again. I'm using this because I can quickly find different bits, determine bit ranges fast without counting the chars, lol.

It's also useful to just enter anything as private key and hit visualize, it doesn't ask for 64 char key, before using this site, I had to add 63 zeros just to get the public key/ address of key 0x1 for example.

Other than educational use, I have no other use of this tool.
Thank you very much.

Edit: I couldn't find the download zip option, Btw, the button is no longer green, it's been like that for months for me.😉

I just noticed pooya shared the link, but I don't know why it doesn't show the download option for me.



Second edit: It doesn't work on my phone, the page loads fine but the 16×16 grid doesn't load, I can't input anything and nothing works.
I know editing the last post bumps the thread as a new post, sorry for that.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
October 01, 2023, 01:21:27 AM
#59
the clone you provided also didn't have the zip file
That link doesn't work, and I didn't change it because the GitHub link is right next to it.

Quote
is it possible to run it on mobile offline?
It should work. But I don't realy see the point of being offline: you shouldn't use this for anything serious, not even offline. Besides, disabling the internet on a phone isn't the same as using an air-gapped device that you'll wipe afterwards.
legendary
Activity: 3472
Merit: 10611
October 01, 2023, 01:17:29 AM
#58
Thanks for the reply, but I was unable to find the zip file and run it locally, the clone you provided also didn't have the zip file, is it possible to run it on mobile offline? Doesn't matter if it works for mobile or not, just  a working page offline would suffice.
Go to the main page of the repository on Github and click the green button on top saying Code and then select the Download ZIP option to get a full copy of the repository. Then inside it you will find the html file called index.html that should be enough to run this and although I haven't tested it considering it is an html file it should run on mobile too.

BTW smart phones can never be considered "truly offline".
copper member
Activity: 1330
Merit: 899
🖤😏
September 30, 2023, 09:40:38 PM
#57
@OP, what happened to your site?
It shows:
Code:
The domain has expired. Is this your domain? Renew now

Whois shows:
Code:
Updated Date: 2023-09-25T07:42:21Z
Registry Expiry Date: 2024-09-25T02:40:28Z
I think this means Namecheap extended it for a year, to give OP the time to renew (at a higher price).

OP hasn't been here in months. The data is on GitHub. Here's a clone.
Thanks for the reply, but I was unable to find the zip file and run it locally, the clone you provided also didn't have the zip file, is it possible to run it on mobile offline? Doesn't matter if it works for mobile or not, just  a working page offline would suffice.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
September 30, 2023, 01:56:55 AM
#56
@OP, what happened to your site?
It shows:
Code:
The domain has expired. Is this your domain? Renew now

Whois shows:
Code:
Updated Date: 2023-09-25T07:42:21Z
Registry Expiry Date: 2024-09-25T02:40:28Z
I think this means Namecheap extended it for a year, to give OP the time to renew (at a higher price).

OP hasn't been here in months. The data is on GitHub. Here's a clone.
copper member
Activity: 1330
Merit: 899
🖤😏
September 29, 2023, 04:39:11 PM
#55
@OP, what happened to your site? It was saying something about certificate and warned about unsafe site, but now it just shows there is no sponsor for you. Is it a domain related thing or you closed shop?
sr. member
Activity: 443
Merit: 350
November 07, 2021, 03:37:32 PM
#54
-snip-
Another thing I would really like to see implemented in your tool is the display of all private keys;
P2SH
SegWit P2SH
P2PKH Legacy

And any other, which is supported by the BTC protocol.
Is it possible to do this implementation?

The private key is just a number. So, no need to make a development to display all private keys. From one private key you can create P2SH, Segwit and bech32 addresses (as you mentioned in your post).

For example, let's take the 256bit number: 4890b831f6257996f56b43f49624478515a497ba8241e64df2b13e22de14fdcf
The related WIF private key for this number is KyemX2RuWDHAvGq7Fn2e8ALLQFvq5sb41kU2hi4jsej4hdjBkBF7

The corresponding legacy compressed address is: 1JX3r8HJdgkeSqGHejMp7SPKTPXn2EXXD2
The corresponding bech32 address is: bc1qcq50ue8xudrtgltzuw34k9vtexmdcg8ly0zjd5
The corresponding Segwit address is: 3C3J1coQwWx7pJBSR37YgTmhEW6SL4kQ9E

So, one private key leads to different bitcoin address types. Probably you wanted to have all types of bitcoin addresses, but not all private keys.
legendary
Activity: 2268
Merit: 18711
July 23, 2021, 04:22:04 AM
#53
I would like to ask you any questions about BTC private keys.
Is the most "secure" way to generate a private key using the 256-bit "byte" format?
If I generate a 512-bit binary string, when converting, will it generate 256-bit?
Bitcoin private keys are 256 bits in length. You cannot use a 512 bit number as a private key unless you perform some function on it to shorten it to 256 bits first.

Another thing I would really like to see implemented in your tool is the display of all private keys;
P2SH
SegWit P2SH
P2PKH Legacy
I'm not OP, but you can obtain P2PKH, P2SH, and P2WPKH addresses by importing the private key in to an Electrum wallet three times, with each of the address types as a prefix.
newbie
Activity: 33
Merit: 0
July 23, 2021, 03:05:09 AM
#52
Kudos man that is some really great information about the private key generator. Are you the developer or did someone else make it for you?
newbie
Activity: 3
Merit: 4
July 20, 2021, 10:28:58 PM
#51
What is the difference of compressed and uncompressed private key? (importing for wallets)
-snip-

"Compressed public keys were introduced to bitcoin to reduce the size of transactions and conserve disk space on nodes that store the bitcoin blockchain database"
For every private key we can generate compressed and uncompressed legacy (starting with 1) bitcoin address*. Every public key contains x and y coordinates of elliptic curve: for uncompressed the public key contains both coordinates, but for compressed only x coordinate and "sign" for y - so the compressed key is less in size, and less in transaction fees as well.

More details are here: https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch04.asciidoc

* Of course there are also segwit (starting with 3) and bech32 (starting with bc) bitcoin address. They are not generates by my tool. However segwit and bech32 also generated from compressed public key.

My friend, I want to congratulate you on the development of the tool, I thought it was amazing!

I would like to ask you any questions about BTC private keys.
Is the most "secure" way to generate a private key using the 256-bit "byte" format?
If I generate a 512-bit binary string, when converting, will it generate 256-bit?

Another thing I would really like to see implemented in your tool is the display of all private keys;
P2SH
SegWit P2SH
P2PKH Legacy

And any other, which is supported by the BTC protocol.
Is it possible to do this implementation?
newbie
Activity: 2
Merit: 0
August 01, 2020, 04:48:48 PM
#50
Could the use of color allow you to reduce the size of the picture?

Just a thought based off a software I recall that printed data in dots and talk of one that could store more data using colored dots.
sr. member
Activity: 443
Merit: 350
August 01, 2020, 09:06:57 AM
#49
What is the difference of compressed and uncompressed private key? (importing for wallets)
-snip-

"Compressed public keys were introduced to bitcoin to reduce the size of transactions and conserve disk space on nodes that store the bitcoin blockchain database"
For every private key we can generate compressed and uncompressed legacy (starting with 1) bitcoin address*. Every public key contains x and y coordinates of elliptic curve: for uncompressed the public key contains both coordinates, but for compressed only x coordinate and "sign" for y - so the compressed key is less in size, and less in transaction fees as well.

More details are here: https://github.com/bitcoinbook/bitcoinbook/blob/develop/ch04.asciidoc

* Of course there are also segwit (starting with 3) and bech32 (starting with bc) bitcoin address. They are not generates by my tool. However segwit and bech32 also generated from compressed public key.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
August 01, 2020, 08:22:34 AM
#48
What is the difference of compressed and uncompressed private key? (importing for wallets)
Also, great work. Finally a project of creating addresses written in javascript. Many cold wallets can be created from your project.

sr. member
Activity: 443
Merit: 350
January 15, 2020, 05:50:40 PM
#47
ricardosuperxHeitorMessias, thank you for your feedback. If you have any ideas for project development please do not hesitate to tell me.
member
Activity: 216
Merit: 33
"Non est ad astra mollis e terris via" Seneca _
January 05, 2020, 11:05:50 PM
#46
Very cool, i ll test this soon, very interesting   Cool
member
Activity: 109
Merit: 13
A positive attitude changes everything *_*
December 31, 2019, 03:58:31 PM
#45
Very Good! I played a little...LOL
sr. member
Activity: 443
Merit: 350
December 12, 2019, 06:44:29 PM
#44
I have made some updates of the tool - added new features and advanced options. Also made small optimization for faster calculation.

New features (Inverse and Rotation):
While creating the visual private key, now it is possible to inverse the key (all bits will be changed to the opposite) and also to rotate the key (the bits 16x16 square will be rotated clockwise).

Advanced options (Explorer, block lines, online check):
Added the possibility to change the default block explorer (by default it is BTC.com, but now it is possible to change it to blockchain.com, blockchair.com, ViaBTC.com, etc.)
In order to create the less bit key the user can block some lines from edditing (block lines option), and the bits in the blocked line will be preset to 0.
Also added the online check option. If this option active, the tool checks the generated address for received transactions. For the already used addresses the tool shows the total volume of received transactions and changes the colour of the cell.

The block line option and online check were requested by github users.

Some screenshots of new features/options:

Rotate and Reverse features (pattern used for clear explanation):


Online check options:


Visual private key generator: https://btckeygen.com

Edited: added link to the tool
legendary
Activity: 2604
Merit: 2353
October 23, 2019, 06:40:55 AM
#43
-snip-
Furthermore, it's known ECDSA can be cracked by O(n1/2) algorithms. So the security of bitcoin is actually 2^128
-snip-

This square root could be applied if you know the pulic key. But the public key is unknown for addresses without outgoing transactions. And modern wallets also designed in the way to generate new addess after every spending, so knowing the public key actually useless.
I'm not sure "modern wallets" don't reuse old addresses, where have you seen that exactly?  Huh
In fact I think people prefer using few addresses, and especially beginners. Most people don't even know they can check all the transactions of their HD wallet on blockchain explorers by simply using their xpub/zpub key.
-snip-

I didn't write that HD wallets re-use old addresses. I just wrote that they generate the next address and "transfer" the change to it remained after the spending.
You wrote that "ECDSA can be cracked by O(n1/2) algorithms", however this could ne done ONLY if you know the public key of the address (without public key you still need 2^256 operations). You know the public key if there are outgoing transactions from the address, however in the case of HD wallets, as soon as you make the payment, the whole remained balance is transferred to new address there oublic key is unknown. So, you still need 2^256 operations.
I understood what you meant and I answered you most of people don't do that so it doesn't concern the majority of transactions.
The change feature only transfer the change of the UTXOs used for paying the transaction, not all the UTXOs of the address, so the other UTXOs and their funds remain at the same address.
Moreover I don't think the change feature is enabled by default in the "modern wallets", as I said above people mostly don't like this feature, especially the beginners. They prefer to be able to easily check and manage few addresses. Look at the transactions of people in a blockchain explorer, you will see change is mostly sent back to the sending addresses...
sr. member
Activity: 443
Merit: 350
October 23, 2019, 03:47:11 AM
#42
-snip-
Furthermore, it's known ECDSA can be cracked by O(n1/2) algorithms. So the security of bitcoin is actually 2^128
-snip-

This square root could be applied if you know the pulic key. But the public key is unknown for addresses without outgoing transactions. And modern wallets also designed in the way to generate new addess after every spending, so knowing the public key actually useless.
I'm not sure "modern wallets" don't reuse old addresses, where have you seen that exactly?  Huh
In fact I think people prefer using few addresses, and especially beginners. Most people don't even know they can check all the transactions of their HD wallet on blockchain explorers by simply using their xpub/zpub key.
-snip-

I didn't write that HD wallets re-use old addresses. I just wrote that they generate the next address and "transfer" the change to it remained after the spending.
You wrote that "ECDSA can be cracked by O(n1/2) algorithms", however this could ne done ONLY if you know the public key of the address (without public key you still need 2^256 operations). You know the public key if there are outgoing transactions from the address, however in the case of HD wallets, as soon as you make the payment, the whole remained balance is transferred to new address there oublic key is unknown. So, you still need 2^256 operations.
legendary
Activity: 2604
Merit: 2353
October 22, 2019, 05:51:32 PM
#41
Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.
2^256 is the security of the bitcoin network, all keys are generated within that range.
-snip-
No in fact the security of the bitcoin network can't be 2^256 because there are only 2^160 addresses existing thanks to the RIPEMD160 hashing. RIPEMD160 provides hashes on only 160bits, so addresses have several different private keys. To crack one address in brute-force you don't need to try each 2^256 keys but only 2^160 at most.
-snip-

Yes, you are talking about the colission here. And here it is offtopic. You are welcome to discuss this in my separate topic: https://bitcointalksearch.org/topic/example-of-btc-collision-2-different-priv-key-to-the-same-btc-address-5185726
From the point of the exact private key the security is 2^256. But of course due to RipeMD160 there is actually no need in exact private key, and on average 2^96 keys could be suitable.

Furthermore, it's known ECDSA can be cracked by O(n1/2) algorithms. So the security of bitcoin is actually 2^128
-snip-

This square root could be applied if you know the pulic key. But the public key is unknown for addresses without outgoing transactions. And modern wallets also designed in the way to generate new addess after every spending, so knowing the public key actually useless.
I'm not sure "modern wallets" don't reuse old addresses, where have you seen that exactly?  Huh
In fact I think people prefer using few addresses, and especially beginners. Most people don't even know they can check all the transactions of their HD wallet on blockchain explorers by simply using their xpub/zpub key.

For being more on-topic, I think we can get a little bit more robust brain wallet without using an unmemorable salt, by creating a key with your graphic brain wallet and then using this key(private, public or address) with a passphrase in a classic text brain wallet. Thus we just need to remember the drawing and the passphrase.
 
Otherwise I think the best keys for (half)brain wallets are hash256 of unique files(own photos for example).
You can keep your file in the cloud, in your e-mail box, on your smartphone, on your windows computer or everywhere you want, nobody will guess that's the key of your wallet. And if you want to make a discreet transaction you can simply send the file to the person you want to pay...
But that's not a true brain wallet unfortunately.  Embarrassed

sr. member
Activity: 443
Merit: 350
October 22, 2019, 04:01:26 PM
#40
Very nice project, it's almost deceiving in how simple it makes private keys look - people have already asked if it's easy to brute force keys because of it, I feel that they don't understand how many combinations of 256 bits you can get!

I would appreciate it if you put a warning in telling people explicitly to use it offline, especially as you encourage people to put in their own private keys to 'visualize' it in your application. Obviously anyone doing that would be crazy to do it online, but there are a lot of newbies in this community nowadays...

Thank you for your feedback.

As for the recomendation to use it offline I made it in "Information" block (link at the bottom):
"[9] Security.
The code is open source. All the private keys are generated on client side, in your browser. This site does not copy or store the information generated by you. Even so we recommend downloading this site (it is available in zip) on your computer, disconnect from the internet and generate the key offline."


zip is available for download form the site directly, and the code is also pubslihed on github, so everybody can have a look at the code and confirm that there are no any back doors or other things to store alien private keys.

I personally like the idea to download the project and generate the key offline - so it makes the process completely secure. Moreover, while you use the physical coin, nobody can assume what outcomes did you have. Other projects (even offline) could generate the key pseudo-random - you will see different points on the screen during your text typing or mouse moving, but you can not be sure that the the final key is random :-) With physical coin you can be sure!

PS. I ordered 16-side dice, and some later will make video how to generate a key with that dice (HEX symbols could be typed directly to the input field of Visualize section). Only 64 tosses are requred (instead of 256 coin flips) - one 16dice toss contains 4bits (from 0000 to 1111). So, the key could be generated within 4-5 minutes instead of 15-20min.
legendary
Activity: 1134
Merit: 1118
October 22, 2019, 03:44:43 PM
#39
Very nice project, it's almost deceiving in how simple it makes private keys look - people have already asked if it's easy to brute force keys because of it, I feel that they don't understand how many combinations of 256 bits you can get!

I would appreciate it if you put a warning in telling people explicitly to use it offline, especially as you encourage people to put in their own private keys to 'visualize' it in your application. Obviously anyone doing that would be crazy to do it online, but there are a lot of newbies in this community nowadays...
sr. member
Activity: 443
Merit: 350
October 22, 2019, 02:20:36 PM
#38
Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.
2^256 is the security of the bitcoin network, all keys are generated within that range.
-snip-
No in fact the security of the bitcoin network can't be 2^256 because there are only 2^160 addresses existing thanks to the RIPEMD160 hashing. RIPEMD160 provides hashes on only 160bits, so addresses have several different private keys. To crack one address in brute-force you don't need to try each 2^256 keys but only 2^160 at most.
-snip-
[/quote]

Yes, you are talking about the colission here. And here it is offtopic. You are welcome to discuss this in my separate topic: https://bitcointalksearch.org/topic/example-of-btc-collision-2-different-priv-key-to-the-same-btc-address-5185726
From the point of the exact private key the security is 2^256. But of course due to RipeMD160 there is actually no need in exact private key, and on average 2^96 keys could be suitable.

Furthermore, it's known ECDSA can be cracked by O(n1/2) algorithms. So the security of bitcoin is actually 2^128
-snip-

This square root could be applied if you know the pulic key. But the public key is unknown for addresses without outgoing transactions. And modern wallets also designed in the way to generate new addess after every spending, so knowing the public key actually useless.
legendary
Activity: 2604
Merit: 2353
October 22, 2019, 01:03:12 PM
#37
Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.

2^256 is the security of the bitcoin network, all keys are generated within that range.

-snip-
No in fact the security of the bitcoin network can't be 2^256 because there are only 2^160 addresses existing thanks to the RIPEMD160 hashing. RIPEMD160 provides hashes on only 160bits, so addresses have several different private keys. To crack one address in brute-force you don't need to try each 2^256 keys but only 2^160 at most.

Furthermore, it's known ECDSA can be cracked by O(n1/2) algorithms. So the security of bitcoin is actually 2^128
 
Quote
You undo exponentiation by taking logarithms, so the process of solving for k is called the discrete logarithm problem. The security of elliptic curve cryptography depends on the difficulty of computing discrete logarithms.

Counting bits of security
The best algorithms for solving discrete logarithm problem in a group of size n currently require O(√n) operations. How big is n in our case?

The base point g was chosen to have a large order, and in fact its order is approximately 2256.  Specifically, the order of g written in hexadecimal is

n = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141.

This means that we get approximately 256/2 = 128 bits of security because √(2256) = 2128.
https://www.johndcook.com/blog/2018/08/14/bitcoin-elliptic-curves/


https://bitcointalksearch.org/topic/bitcoins-public-key-security-level-2859033

https://bitcointalksearch.org/topic/why-does-256-bit-ecc-offers-equivalent-security-of-128-bit-symmetric-encryption-1007619
legendary
Activity: 3472
Merit: 10611
October 14, 2019, 11:09:00 PM
#36
snip

Funny tool but I wonder if there is any algorithm capable to randomly choose the cells in that 16x16 square.   In fact I have found    how to randomly select Excel's cells  that  can be applied for such task but I'm not quite  sure if the method they offer is truly random.

if you don't think of it as "selecting cells" then the solution would become clear. (same with your link about excel). basically it is two steps: 1) assigning a number to each cell. 2) selecting a random number!
in this case each cell is the binary representation so it has only two modes: on and off or 1 and 0. so all you have to do is generate a random number, convert it to binary and set cells state using the bits.
by the way that is what the random button at the bottom of the square is supposed to do.
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
October 14, 2019, 12:41:27 PM
#35
I also made a video instruction how to create a bitcoin private key by flipping a coing 256 times: https://youtu.be/WyBdYhwweaE

The video is fast moving, but in reality the total my time to flip the coin 256 times was 16 minutes. I tried to do it very fast.
Considering the time for filling the cells and printing the key, the total time for private key generation will be approximately 20 minutes.

Good job.
This method is very cool, as you can generate a private key without a computer.
however, to get the public address we need a computer.
hero member
Activity: 1358
Merit: 635
October 14, 2019, 07:06:40 AM
#34
snip

Funny tool but I wonder if there is any algorithm capable to randomly choose the cells in that 16x16 square.   In fact I have found    how to randomly select Excel's cells  that  can be applied for such task but I'm not quite  sure if the method they offer is truly random.
legendary
Activity: 2464
Merit: 3878
Hire Bitcointalk Camp. Manager @ r7promotions.com
October 12, 2019, 04:10:23 PM
#33
I also made a video instruction how to create a bitcoin private key by flipping a coing 256 times: https://youtu.be/WyBdYhwweaE

The video is fast moving, but in reality the total my time to flip the coin 256 times was 16 minutes. I tried to do it very fast.
Considering the time for filling the cells and printing the key, the total time for private key generation will be approximately 20 minutes.
Okay this is fun :-D
Have you considered to add it in the website. Visitors will have real interest in that case to give it a try.
sr. member
Activity: 443
Merit: 350
October 12, 2019, 04:06:17 PM
#32
I also made a video instruction how to create a bitcoin private key by flipping a coing 256 times: https://youtu.be/WyBdYhwweaE

The video is fast moving, but in reality the total my time to flip the coin 256 times was 16 minutes. I tried to do it very fast.
Considering the time for filling the cells and printing the key, the total time for private key generation will be approximately 20 minutes.
legendary
Activity: 2464
Merit: 3878
Hire Bitcointalk Camp. Manager @ r7promotions.com
October 08, 2019, 11:06:07 AM
#31


Thank you and good to see the conversation is still alive.
sr. member
Activity: 443
Merit: 350
October 08, 2019, 11:00:57 AM
#30
I added the warning messages about drawing patterns and suggested to create the address only with the coin flip. Also added the messsage to the "Visualize Key" section to think twice before visualizing the key. "Drawing" pictures, logos, figures and use them for private keys could be made only for educational purposes, or/and some small bitcoin gifts to friends  Cool

I also created the repository on GitHub and added the link to the initial message of this topic: https://github.com/MrFreeDragon/VisualBTC
sr. member
Activity: 443
Merit: 350
October 03, 2019, 05:24:43 AM
#29
Chances of twopeole drawing the same pattern?  Relatively high.

Nice question. And it has been already discussed in this topic earlier. Of course the pattern could be not secure.
I will add the warning message not to create the real money bitcoin address based on visual pattern, and use these addresses only for educational purposes or just for funny small gifts to the friends, which could be unusual and cool in some cases.

The most secured way to create the address is to flip the physical coin and fill each cell of the square based on the coin's outcome.
sr. member
Activity: 443
Merit: 350
October 03, 2019, 05:18:57 AM
#28
But for better securitty it is recommended to download the whole site and generate the key offline.

Download ZIP is a broken link (Not found).

Thank you. Recovered.  Wink
The zip file was named VisualBTC.zip, but the link - visualBTC.zip (1st letter "V" instead of "v")
sr. member
Activity: 485
Merit: 274
October 02, 2019, 07:55:33 AM
#27
Chances of twopeole drawing the same pattern?  Relatively high.
legendary
Activity: 2317
Merit: 2318
October 02, 2019, 06:15:04 AM
#26
But for better securitty it is recommended to download the whole site and generate the key offline.

Download ZIP is a broken link (Not found).
sr. member
Activity: 443
Merit: 350
September 26, 2019, 08:00:14 PM
#25
Also consider creating a repository on Github for this project, so that people can see the changes in the source files and download from a place other than the site. Also Github is a good place to discuss issues and suggestions, and you might even get other people to help you with your code.

Yes, i will make the repository on Github later. This was already discussed here earlier see the qute below the reason why.
Morover, I have the question to the coders to make the script faster for IE. In Interent Explorer and Edge the code works very slow - so it is possible there only tick one cell by cell. But on all other browsers it is possible to clickdown the mose and move filling several neighbor cells while moving the mouse.

additionally i see a zip file link at the bottom. is your project open source? if it is, sharing it on GitHub and linking it there is a better idea.

Primarily I decided to post the project here to discuss the topic and idea with the the subject specialists. If it is interesting, of course I will share it on GitHub for subsequent code discussions. The is no need to discuss the code for thing of naught.
legendary
Activity: 3024
Merit: 2148
September 26, 2019, 06:02:55 PM
#24
Use this instead of Math.random() - https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues

There's no excuse to not use it when you are dealing with something that is even remotely required to be secure, just a few lines of code can potentially save someone from big trouble in the future.

Also consider creating a repository on Github for this project, so that people can see the changes in the source files and download from a place other than the site. Also Github is a good place to discuss issues and suggestions, and you might even get other people to help you with your code.
sr. member
Activity: 443
Merit: 350
September 26, 2019, 02:32:28 PM
#23
the coin should be symmetrical and your flips should always have a 50-50 chance of heads or tails.

I do not beleive that it is possible to find exactly 50/50 symmetrical coin and the physical conditions to this. Morover for private key creating the small skewness could be the additional entropy (like ones use the coin 51/49, others use the floor conditions or toss habits 48/52, etc).

Interesting fact, that a statistics professor has asked his students to flip a coin over the several months period. He devided his students into 2 groups - one group really used the coin and recorded the results, but another group was asked to imagine that they use the coin and record the results from their assumptions the coin outcome could be. After collecting the results the professor was able to identify each group: the "guessing" group's results were very close to 50/50, but the results of the group really fliped a coin were wider than 50/50.

Another professor asked students to flip coins over a years, and he has formed a 95% confidence interval for the long-run population proportion of heads to be (0.497/0.513). Yes, the narrow results, but not yet 50/50

Thats why the ideal 50/50 coin is not very neccessary, some small deviation is allowed in real life.
legendary
Activity: 3472
Merit: 10611
September 26, 2019, 01:57:54 PM
#22
it is interesting to "visualize" a private key in binary and also if you use the first method (coin flip) to create
r idea.

So, what do you think about the key generation through the 256 coin flips? [my opinion - is is the most secure way nowadays]

that was one of the interesting parts about your project actually. it makes recording the flip results and eventual conversion to an integer (or hex) which you could then store or use as your private key, a lot easier than using bash or generally a command line option.

coin flip or generally any source of entropy that doesn't depend on computers can be very secure but it is sometimes extremely hard and they require a lot of attention. you should always make sure there is no bias in the results. for example the coin should be symmetrical and your flips should always have a 50-50 chance of heads or tails. and you have to repeat this 256 times and each time do it in the same exact way, that is not easy!
sr. member
Activity: 443
Merit: 350
September 26, 2019, 12:51:18 PM
#21
So, what do you think about the key generation through the 256 coin flips? [my opinion - is is the most secure way nowadays]
As long as you're certain the software you use actually creates a private key from your coin flips, this could be very secure.
I'm saying this because of the paper wallet website that was compromised recently: it generated pre-defined private keys, even when used offline, and people are still losing funds because of it.
If you're using coin flips, it doesn't hurt to create the private key with different software on independent systems, and ensure they're the same (and always on air-gapped hardware that won't ever go online again).

Yes, yes and yes, I'm with you. And it was the initial idea to create the key from the coin flip outcomes. I was also concerned about offline paper wallets as their random algorythms could be pre-defined.
The first keys I created in Excel: filled the cells 16x16 with 1 or 0, then combined bits by every line and concatenating all lines received the full 256 bin number, converted it to HEX and go to online tool to convert to addres or use phyton function locally. It was long and boring, so I decided to develop this tool. While developing I also added the random function and own key visualization - but yes, these both are only could be used for educational or fun purposes.

The real key should be generated only from the cion flip outcomes.
sr. member
Activity: 443
Merit: 350
September 26, 2019, 12:40:50 PM
#20
Fun site. I've been playing around with it for 10 minutes or so, generating some common patterns - checkerbox, vertical stripes, horizontal stripes, diagonal stripes, boxes, etc., - and haven't found a single address which has ever had any funds in it. This is in contrast to brain wallets dependent on a password or phrase, where most of the commonly used words/phrases lead to wallets which have been used multiple times and have all been emptied/hacked long ago. So it seems like this kind of method for generating private keys has never been used before, so kudos for that.

Thank you for your feedback.

I'm also a little concerned about the function to "Visualize my own HEX private key (tick here to input your key)". Many newbies often fall for scams (not saying you are a scammer by any means) where they input their private key or seed in to a website and all their coins get stolen. I would like to see a warning here stating that if anyone does want to use this function, they should be downloading the site and running it on an airgapped machine.

This is a very valuable comment. Absolutely agree with you. I will add the warning for this function not to use real private keys with the funds for their visualization. Actually there is no need in the random private key visualizaition, because the user will find nothing interesting in it - just a couple of bits randomly spread across the square.
legendary
Activity: 2268
Merit: 18711
September 26, 2019, 10:34:39 AM
#19
Fun site. I've been playing around with it for 10 minutes or so, generating some common patterns - checkerbox, vertical stripes, horizontal stripes, diagonal stripes, boxes, etc., - and haven't found a single address which has ever had any funds in it. This is in contrast to brain wallets dependent on a password or phrase, where most of the commonly used words/phrases lead to wallets which have been used multiple times and have all been emptied/hacked long ago. So it seems like this kind of method for generating private keys has never been used before, so kudos for that.

Having said that, I agree with all the posts above that no one should seriously use this to generate their private keys. Brain wallets are a notoriously poor method for storing your coins. Your 256 bit number should be truly random, and not based on some words, phrases, (or now) pictures which a user has chosen/drawn and could be easily brute forced or forgotten.

I'm also a little concerned about the function to "Visualize my own HEX private key (tick here to input your key)". Many newbies often fall for scams (not saying you are a scammer by any means) where they input their private key or seed in to a website and all their coins get stolen. I would like to see a warning here stating that if anyone does want to use this function, they should be downloading the site and running it on an airgapped machine.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
September 26, 2019, 09:47:43 AM
#18
So, what do you think about the key generation through the 256 coin flips? [my opinion - is is the most secure way nowadays]
As long as you're certain the software you use actually creates a private key from your coin flips, this could be very secure.
I'm saying this because of the paper wallet website that was compromised recently: it generated pre-defined private keys, even when used offline, and people are still losing funds because of it.
If you're using coin flips, it doesn't hurt to create the private key with different software on independent systems, and ensure they're the same (and always on air-gapped hardware that won't ever go online again).
sr. member
Activity: 443
Merit: 350
September 26, 2019, 08:36:30 AM
#17
Thank you all for your comments regarding the security. I added the warning message to the initial post of this topic. Latter add it to the site project as well.

I agree that patterns used in key generation could be not secure. And there are many reasons for it: attackers could guess and brutforce the pattern using the list of commmon picture/figure patterns, some attackers also could use hypnosis or other skills to find out the pattern (if the key is only written on the paper, or recorded within the hardware ledger it is impossible to hear it from the user as the user does not know it himself  Grin)

However I retained the physical coin flip methond as a secure way for key generation. I'm sure that the tossing (coin flip) is the most secure way to generate the private key. So, for this way my project is a very nice tool to use. Physycal coin is used as the entropy, my project is used just only for common transformation to the address.

it is interesting to "visualize" a private key in binary and also if you use the first method (coin flip) to create
r idea.

So, what do you think about the key generation through the 256 coin flips? [my opinion - is is the most secure way nowadays]
sr. member
Activity: 443
Merit: 350
September 26, 2019, 08:14:03 AM
#16
additionally i see a zip file link at the bottom. is your project open source? if it is, sharing it on GitHub and linking it there is a better idea.

Primarily I decided to post the project here to discuss the topic and idea with the the subject specialists. If it is interesting, of course I will share it on GitHub for subsequent code discussions. The is no need to discuss the code for thing of naught.
legendary
Activity: 2464
Merit: 3878
Hire Bitcointalk Camp. Manager @ r7promotions.com
September 26, 2019, 04:47:12 AM
#15
~snip~
Yes, you are right about the board topic. Done.
Glad to see you moved it here and getting right kind of discussions. Again very good work however it's very much clear to me that there is a message needed in the website that users are advised not to use the addresses generated in the site to hold BTC. It's okay for educational purpose.

When it comes to visualization and it has boundary limitation then human mind are limited and ends up with very common images. For example: heart, 0, 7. And it's very possible to find the keys if two person visualize the same pattern.

I am 100% with the following quote:
This basically means that IF your site becomes popular, and a million people use it to "draw" their private keys, i can pretty much guarantee that if I would generate a dictionary of the one million most popular images and shapes, convert it into 16x16 pixels, convert it to a private key => public key => address and check the address for unspent outputs, i'd find several dozen of funded addresses i'd be able to rob.
legendary
Activity: 3584
Merit: 5243
https://merel.mobi => buy facemasks with BTC/LTC
September 26, 2019, 12:56:20 AM
#14
Sorry, i'm a bit late with my reply about math.random(). I'm a big fan of your site, but i'd like to see a warning banner: "for educational purposes only" on the very top.

The "problem" when people would use this site to create an "actual" private key goes further than the cryptographic insecure javascript function... Your site is (more or less) a new brainwallet.
Sure, a completely random pattern is impossible to bruteforce... A random pattern created with math.random is *allmost* impossible to bruteforce (actually, i believe it's still impossible, even with the weak math.random function, but still...). BUT, a brain is a terrible source of entropy (i don't know who first came up with this quote, but i really like it).

This basically means that IF your site becomes popular, and a million people use it to "draw" their private keys, i can pretty much guarantee that if I would generate a dictionary of the one million most popular images and shapes, convert it into 16x16 pixels, convert it to a private key => public key => address and check the address for unspent outputs, i'd find several dozen of funded addresses i'd be able to rob.

Don't get me wrong, you wrote a nice learning tool, it's fun to see and it can teach people about the basics of key and address generation... However, i would NOT recommand to "draw" a drawing you can easily remember, and fund the address that was actually generated as a result of this drawing, nor would i use the random function due to the cryptographic weakness.

Conclusion: nice tool, nice for learning, nice for visualising a pregenerated private key on an offline machine, nice for playing, not ideal for actual production key generation
legendary
Activity: 3472
Merit: 10611
September 25, 2019, 11:31:19 PM
#13
1) Flip the coin 256 times and write down each outcome by filling the cell of the 16x16 square;
2) Use random, but with later manual intervention: received the filled square of the bits, manually change any cell you like to the opposite value, and do it manual changing as many times as you want.
3) Manually fill all the cells randomly chaning the cell and clicking the mouse to fill/unfill the cell.
4) Use visual patterns (visual in the context of bits presentation in the form of 16x16 square). This way could be done also for gift pusposes: for example draw a heart, generate the key with the address using this pattern, transfer some BTC to this address and present such key to the person you like.

it is interesting to "visualize" a private key in binary and also if you use the first method (coin flip) to create it but it is not a good idea to use it in any other way such as manual selecting the squares, using random button,... if the key is to be used for funds.

you also should add the warning to your site explaining the insecurity of the random function used, and warn about manual selection since people are never a good entropy source.

additionally i see a zip file link at the bottom. is your project open source? if it is, sharing it on GitHub and linking it there is a better idea.
sr. member
Activity: 443
Merit: 350
September 25, 2019, 06:46:52 PM
#12
Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.

2^256 is the security of the bitcoin network, all keys are generated within that range.

Your way may not be most the most secure I think.
You still need a computer to convert private key in HEX to other formats and to a public address as well (a computer is needed in those operations).

Yes, every private key is within the range 2^256. So, the security - is to generate this number very very random, without any computer dependencies. I suggest to flip the coin in order to receive a number within the range - actually this number is all you need for your BTC.

All the subsequent operations to convert the private key to bitcoin address could be performed ONLY in one possible way, so you receive ONLY one specific bitcoin address from the certain private key. And you do not need any random operations or random entropy to perform these transformations. Yes, these calcualtions are made by my project (by computer), and nothing secret in these operations because such calculations could be performed ONLY in one possible way. Take any number X withing the range 1 - 2^256, and there is ONLY one corresponding BTC address to this X; so it does not matter who and how performs the transormations.

P.S. Ok, BTC is developing and actually there are 4 known different bitcoin addresses to the number X: (1) Legacy uncompressed; (2) Legacy compressed; (3) Segwit legacy; (4) Segwit bech32; Legacy 1 and 2 start with "1"i in the beginning, Segwit legacy starts with "3" and Segwit bech32 starts with "bc1". But these different formats is not topic here (my project works with legacy addresses - compressed and uncompressed). If you need legacy commpressed address, where is ONLY ONE way to convert the number X to it, and there is nothing unsecure in this convertation.
The most vulnerable point in bitcoin address creation is the number generation, i.e. selection of 256 bits (digits 1 or 0), and of course the private key storage (but key storage is offtopic here as well).
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
September 25, 2019, 05:39:14 PM
#11
Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.

2^256 is the security of the bitcoin network, all keys are generated within that range.

Your way may not be most the most secure I think.
You still need a computer to convert private key in HEX to other formats and to a public address as well (a computer is needed in those operations).
sr. member
Activity: 443
Merit: 350
September 25, 2019, 05:21:09 PM
#10
256 outcomes for a hacker is like an hour or two of his life before he can crack an operating wallet which the outcomes for the private keys will come directly from your website.

It is not.

Nobody could crack 256 independent outcomes generated by a physical coin fliped offline. It is 2^256 possible combinations - you can not imagine how much is it! It is the most secure way for paper wallet creation, as it does not use any computer random algorithms.

This way is suitable for long term BTC storage. Because as soon as you decide to make spendings from such paper wallet there are 2 events that decrease the security: you should import the key to your favourite wallet ([1] the key become open for the wallet software),  and [2] while making the transaction you make the public key open to blockchain
hero member
Activity: 1680
Merit: 655
September 25, 2019, 03:54:07 PM
#9
I'm with bitmover on this one, I'll rather suggest this site for education purposes only but I wouldn't recommend anyone using it to create their private keys. 256 outcomes for a hacker is like an hour or two of his life before he can crack an operating wallet which the outcomes for the private keys will come directly from your website. I would rather prefer the private keys being generated by the wallet itself because I know that I'm the only one who have seen or now the combination of my own private key.
sr. member
Activity: 443
Merit: 350
September 25, 2019, 01:06:20 PM
#8
You use Javascript's math.random function for generating random keys.... Please, don't do this... I'm not a JavaScript Dev, but I'm pretty sure that's not cryptographic secure...

https://www.google.com/search?q=javascript+math.random+vulnerability

Thank you for the comment. You probably right that the math.random is not secure. However actually my project doesn not need this function.

The idea is to create the private key manually, putting each bit to the cell of square 16x16 (256 bit in total). The most secure way is to flip a coin 256 times and fill every cell to receive the final 256 digit bin number. This 256bit number is immediately converted to the public key and bitcoin address with corresponding QR codes and WIF for private key.

math.random is used once to randomly fill all the 256 cells; it is also used in coin mode (0 or 1 for every cell). But of course I do not recommend to generate private keys with this random way (random function of the project). It was added just for educational purposes, or for more convinence making the starting point for key creation.

So the recommended ways to generate the key are:

1) Flip the coin 256 times and write down each outcome by filling the cell of the 16x16 square;
2) Use random, but with later manual intervention: received the filled square of the bits, manually change any cell you like to the opposite value, and do it manual changing as many times as you want.
3) Manually fill all the cells randomly chaning the cell and clicking the mouse to fill/unfill the cell.
4) Use visual patterns (visual in the context of bits presentation in the form of 16x16 square). This way could be done also for gift pusposes: for example draw a heart, generate the key with the address using this pattern, transfer some BTC to this address and present such key to the person you like.
legendary
Activity: 3584
Merit: 5243
https://merel.mobi => buy facemasks with BTC/LTC
September 25, 2019, 12:30:14 PM
#7
You use Javascript's math.random function for generating random keys.... Please, don't do this... I'm not a JavaScript Dev, but I'm pretty sure that's not cryptographic secure...



https://www.google.com/search?q=javascript+math.random+vulnerability
legendary
Activity: 2352
Merit: 6089
bitcoindata.science
September 25, 2019, 12:20:18 PM
#6
Nice job OP.

I believe your private key generator is fantastic for educational purposes, however I certainly would not recommend anyone using the generated keys to store bitcoin, for security reasons of course. Anyway, it is very interesting

Your website reminded me of an interesting video (https://www.youtube.com/watch?v=ieHoQ4sGuEY), which is inspired in a idea that Antonopoulos had in his book mastering bitcoin. He suggests that we can create private keys just by flipping a coin 256 times, and taking note 0 or 1.
And that guy made a video doing that. Very boring lol

Another very visual private key generation method.

Congrats on your project.
sr. member
Activity: 443
Merit: 350
September 25, 2019, 08:05:51 AM
#5
Awesome work. Sent you 3 sMerits and I think this is a wrong board for the discussion about your project. I suggest you to move the topic top the Project Development section. You will find other experts to share your knowledge to improvise the project.

Do you know how to move a topic? Feel free to ask if you need any assistance.

Yes, you are right about the board topic. Done.
legendary
Activity: 2464
Merit: 3878
Hire Bitcointalk Camp. Manager @ r7promotions.com
September 25, 2019, 06:28:53 AM
#4
Awesome work. Sent you 3 sMerits and I think this is a wrong board for the discussion about your project. I suggest you to move the topic top the Project Development section. You will find other experts to share your knowledge to improvise the project.

Do you know how to move a topic? Feel free to ask if you need any assistance.
sr. member
Activity: 443
Merit: 350
September 25, 2019, 06:22:05 AM
#3
Is this a tool you developed or you have just posted for the site? Just curious to know about the author. It seems a very good job.

Thank you. Yes, it was developed by me.
legendary
Activity: 2464
Merit: 3878
Hire Bitcointalk Camp. Manager @ r7promotions.com
September 25, 2019, 06:07:06 AM
#2
Is this a tool you developed or you have just posted for the site? Just curious to know about the author. It seems a very good job.
sr. member
Activity: 443
Merit: 350
September 25, 2019, 01:09:21 AM
#1
This is the visual bitcoin private key generator.

The square 16x16 (=256) is used for generation purposes, where each cell represents one bit. The idea is that the filled cell represents "1" bit in the key, and not filled cell represents "0" bit in the key. Such presentation allows creating visual keys which could be easily memorized by human, but hardly understood by machines. You can draw pictures, logos, figures, favorite symbols and so on. You can also make your own patterns and designs and use them as your key. The benefit from such presentation is that you can "store" this key in your memory, just remembering the way you made the drawings.

There is also the option to generate the key in coin mode. It is known that the most secure way to generate bitcoin key is to flip a coin 256 times, and write down each outcome as 1 or 0 depending on the coin side. Visual private key generator can assist you in doing it. Just start flipping the coin and filling the cells line by line from 1x1 to 16x16 and after 256 outcomes you will have a nonsense "picture" represented your unique private key. You can be sure that nobody in the world have ever generated the same key or would generate in the future. The probability of such collision is so small that it is really equal to 0 for all of us and many other future generations.

All the private keys are generated on client side, in the browser. The site does not copy or store the generated information. But for better securitty it is recommended to download the whole site and generate the key offline.


Visual private key generator: https://btckeygen.com

Video instruction (private key generation by flipping a coin 256 times): https://youtu.be/WyBdYhwweaE
Educational visual pattern keys: https://youtu.be/0Ug4YBEyRFQ

Project structure:

Code:
1) index.html               ---> main  HTML file with the objects and references to scripts and styles
2) css/visualPrivKey.css    ---> Styles sheet
3) js/visualPrivKeyMain.js  ---> Main script with canvas calculations and object functions
4) js/bitcoinJS-lib.js      ---> BitcoinJS-lib v0.1.3-default (ECDSA formulas)
5) js/QRcode.js             ---> QR Code Generator for JavaScript

GitHub repository: https://github.com/MrFreeDragon/VisualBTC

Some screenshot examples of the keys and their visualization from the project:

1) Pattern 1 and the corresponding key + address (compressed):


2) Pattern 2 (heart) and its key + address (uncompressed):


3) Visualization of custom HEX key (the key was taken from the public internet, and it corresponds to the uncompressed BTC address with the transactions):


WARNING: The pattern/logo/figure used in bitcoin key generation could be vulnerable, so use these keys only for educational purposes, for fun or for small gifts to others. For real money storage employ a physical coin to fill every bit of your key flipping it 256 times.
Jump to: