BooknemonicSign/Verify and Encrypt/Decrypt easily and simply.Nine months have passed since I created my account here, on bitcointalk and I can admit that I learn something new every-single-day. There are some forum experts that have helped me thousands of times and I thank them! I've not just understood the way bitcoin works, but much more. You see, bitcoin created me an interest towards cryptography. Reading terms like "digital signatures", "encryption", "hash function" made me spend time on understanding them. Sending a message that can be read only by the person that owns a key seems impressive for me. IMO, maths are underrated. Last year I started learning C#, because I've always wanted to create softwares.
It's time to publish my first open-source project.
During my stay here, I got familiar with PGP keys and the way they work. I like saying that I'm still a beginner, though. The problem I noticed is that PGP keys are enormous to write them down on a paper. Furthermore, the GPG model seems too complicated to work on and even to understand. Encrypting and making digital signatures using Electrum seemed a better choice since it's
pure ECC. Still, it would be hard enough to write 66 hexadecimal characters on piece of paper, because of possible mistakes. Since bitcoin geniuses thought of a way to encode an entropy to words, so we could keep our funds safe and easy to access, I don't understand why we couldn't do that for our identities too.
Today, I finished the v0.1 of Booknemonic, a program that does this job.
Booknemonic.org • Source codeThe program encrypts and signs messages exactly like electrum plus mnemonic encoding. It follows these steps:
1) Creates a private mnemonic by encoding an entropy.
2) Takes the public key of the first derivation path.
3) Encodes that 256-bit public key to a bigger mnemonic.
So now, the roles of private and public key have changed to private and public mnemonic.
Because the phrases "private mnemonic" and "public mnemonic" are hard to pronounce, I named them public words and private words that are mathematically connected.
As I said, I'm a beginner on C#, so my code may be messed up. I would like to tell me if you think that I've done something wrong. I have used .NET Core 5 and the following libraries:
I would also like to thank the people that helped me with queries on these threads:
I want to spread this. Therefore, I'll merit anyone that will reply with a creative encrypted message.
----- PUBLIC WORDS -----
advance concert visit awesome neglect fire dizzy club deny danger disease sign rebel donkey tone educate dumb desert mosquito happy crane jungle grit near
-------------------------
I'm signing a message with these words too, to prove that I own them:
-----BEGIN SIGNED MESSAGE-----
I'm Angelo, also known as BlackHatCoiner, and I'm signing the first published message using Booknemonic. (08/12/2020)
-----BEGIN SIGNATURE-----
advance concert visit awesome neglect fire dizzy club deny danger disease sign rebel donkey tone educate dumb desert mosquito happy crane jungle grit near
IDaA76W5ZynVxeFeHN69mbGKG/dCmzdCi30R9X+7i6PrR4UJAEAsHuSJ3YUD6kKD6UcrFRjU6UsL9VSP05XvfrE=
-----END SIGNED MESSAGE-----