Cryptographic hashing is one of the cornerstones
of blockchain technology and is at the heart of what
guarantees the reliability and integrity of blockchains.
Cryptographic hashing involves the running of a
cryptographic algorithm (a hash function) to turn a
block of data of any length into a fixed-length output
(a hash). Computing the hash function for a small
amount of input data, such as a short string of
characters making up a single word could produce,
for example, a 40 character string (hash). Similarly,
computing the same hash function for terabytes of
input data would also produce a 40 character string.
Computing the hash function for the same input data
will always generate the same hash. But even a very
small change to the input data (such as changing
a single byte in a terabyte of data) produces a
significantly different hash as an output. Generally,
the only way to effectively reverse the hash function
(to start with the hash and determine the input data
that was used to generate the hash) is to compute
the hash function for all possible input data until a
particular input generates the same hash.
Salting and peppering are two methods that increase
the security of hashed data by adding random values
to the data being hashed. By enlarging the amount
of data being hashed, these methods increase the
amount of computational energy required to reverse
the hash function. The difference between salting
the data and peppering the data is that while salt is
stored with the underlying data off-chain by the hash
generating user, pepper is stored separate from the
data or not at all.6
GDPR and the Blockchain I 13