How to say something, with out saying it, and prove it
Have you ever wanted to say something but not say it out loud, and be able prove you said it later? An example of this might be prove you had an idea at a particular time, but not give up the idea itself. In fact this was a common practice for 19th century scientist before the patent system. Scientist would publish their ideas in the local newspaper in a manner that only they could decipher. Later if there was a dispute about who had the idea first, they could reveal the method of reading the text and therefore prove they had the idea first.
Hash Functions
Luckily for us we don't have to devise home grown methods to disguise text we can just use hash functions
. Hash functions are a branch of cryptography that takes data as an input and returns an undecipherable output. What I mean by that is, if Bob were to give Alice a hash there isn't a way she can know what the input is using just the hash. If Alice has a hash and Bob claims to have the data that produced it, all he has to do is give Alice the data and she can run it through the function and compare the resulting hash with the hash she already has. If they match then Bob has proved he has the right data.
Lets look at an example, here's some text: Let’s make a statement
, and now lets hash this text using the SHA-256
hash function. The result will be 3303b3788ec4a91b77c482f090c6149c86e28eb3920cbd87a1a89a81572c70dd
. Notice the result only contains numbers and the letters A-F. This is called hexadecimal encoding . One digit of hex code represents a number between 1 - 16
. However, computers can only work with 0's
and 1's
so each digit in hexadecimal is encoded using 4 bits. You can see how that works using this website. Since our hash is 64 digits long and each digit get 4 bits, that means the hash is really just a 256 bit number (64 * 4 = 256). Now you know why it's called SHA-256
, because the output is always 256 bits long (which is a really big number).
There are many more kinds of hash functions, and you can read more about them and how the work on here
Can you verify that?
There are lots of ways to check if some data matches a hash. If you do a google search for SHA-256 hash online
you'll get a list of sites where you can paste some data and get a hash back. However, since you have no control over these websites I would suggest learning how to create and verify hashes on your local computer. If your are a Mac user your computer can do this right off the shelf with a few commands to the command line. There is no built in way to check hashes in windows but you can follow this official Microsoft tutorial to show you how.
Mac Users:
1 - Open a new terminal window .(command + space) then type terminal
2 - Type this command shasum -a256 <path to text file>
example: shasum -a256 /Users/MyAccount/Desktop/fileToCheck.txt
The computer should now display a 64 digit hexadecimal number that you can use to compare or share.
I hope this little explanation has been useful and please let me know if you have any questions in the comments.
I found you via Curie. And yes, this is a very interesting subject. Thanks for posting.
For some reason, computer language gives me bumble bees in my head. I found your post really interesting though.I didn't know that scientists posted their ideas cryptically....early computer brains :)
Thanks for the feedback. I tried to make it as straight forward as possible, but there are apps that do this stuff too that are a little easier to work with. Just use keywords like
hash app
orchecksum app
and you should be able to find some.To match your scientist I feel a final step is missing and that is to post your hash to a blockchain like bitcoin. This way you can prove you said it at a particular time, say a hash of your invention. No one on earth can erase or edit existing data in a blockchain so there is no one to trust regarding the time stamp.
https://proofofexistence.com
Yes, that is a great way to verify a claim at a particular time. You could also do that on the Ethereum blockchain by placing the hash as data in a transaction. In fact there is a Ethereum graffiti wall as at address
0x0000000000000000000000000000000000000000
https://etherscan.io/address/0x0000000000000000000000000000000000000000
this is a cheaper option, however when i check some transactions on that address, there are no hashes in the data field at all
i can't find it either