A cryptographically hash function is a special kind of hash function where it is practically impossible to recreate the input data on which the hash value is based. These types of hash functions are particular important in the world of cryptographic signatures. The hash functions can be used to sign documents, contracts, messages, transactions, and anything else digitally over the Internet. With these systems, it’s easy to find out the public key of the signer, but the private key is not exposed.

### Usage in Digital Signatures

Cryptographic hash functions are most commonly known for their use in digital signatures. These types of signatures tend to be more reliable than written signatures, as long as the private keys attached to a signature is secure. These signature schemes work on a system of private and public keys. The public and private keys have a mathematical relationship where it’s difficult to produce a private key from the public key and a message. It’s also easy for the person holding the private key to decrypt any message sent to them with the public key. Before signing a message with a private key, a hash function is used to simplify the message and make it smaller. The person receiving the message will be able to confirm that the signer has access to the private key without knowing the details of that key.

### Hashcash and Proof-of-work

Hashcash is the proof-of-work system used by Bitcoin to generate new bitcoins. This cryptographic hash function allows users to take a block that could be any size and transform it. Making a small change to an input attached to a hash function will change the resulting hash dramatically, which is why block hashes can also be used as serial numbers for Bitcoin blocks. Hashcash was also used as the proof-of-work function of choice by cryptocurrency proposals in the past, such as B-money and Bit-Gold.

### Hashcash and Bitcoin Difficulty

Bitcoin difficulty will have a certain number of leading zeros to decide how difficult it is to mine Bitcoin blocks. This difficulty number is updated roughly every two weeks. The computer of a Bitcoin miner will continue to try different possibilities until it can create an integer below the threshold set by the current Bitcoin difficulty.This process takes a large amount of computing power, which is why hashcash works perfectly as a proof-of-work function for Bitcoin. Due to the process of spending resources on computing power, the miner has proven his or her worth to the Bitcoin network.