<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Johannes Müller</title>
        <link>https://paragraph.com/@johannes-m-ller</link>
        <description>GM 🔆
I am Johannes👋
Quit my job to go full time into web3 🚀 
Sharing my story and Infos about web3📖
Likes coffee ☕ and good sandwiches </description>
        <lastBuildDate>Mon, 27 Jul 2026 03:38:58 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Johannes Müller</title>
            <url>https://storage.googleapis.com/papyrus_images/0ce4ff9ba946532d8372156d4218c3d216507d471b6a77da0ec32376fa99d5bc.jpg</url>
            <link>https://paragraph.com/@johannes-m-ller</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[What is a Hash?]]></title>
            <link>https://paragraph.com/@johannes-m-ller/what-is-a-hash</link>
            <guid>UtcjhAMKoqAe8WerPRXv</guid>
            <pubDate>Tue, 21 Jun 2022 14:48:48 GMT</pubDate>
            <description><![CDATA[A Hash function is simply a function that maps an input X of arbitrary length to an output h(x) of fixed length n.image of hash”The input to a hash function is called a pre-image, the message, or simply the input data. The output is called the hash" -Mastering Ethereum, by Andreas M. Antonopoulos, Gavin WoodSo in simple words, no matter how long / short your input is, a hash function will always give you a fixed sized result. A Hash function has two properties :Compression (described above)It...]]></description>
            <content:encoded><![CDATA[<p>A Hash function is simply a function that maps an input X of arbitrary length to an output h(x) of fixed length n.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6634f4365c41228dd7871b46ef6affe6b3ef24d50e57dc0bafb7d3b51ce854f5.png" alt="image of hash" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">image of hash</figcaption></figure><blockquote><p>”The input to a hash function is called a pre-image, the message, or simply the input data. The output is called the hash&quot;</p><p>-Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood</p></blockquote><p>So in simple words, no matter how long / short your input is, a hash function will always give you a fixed sized result.</p><p>A Hash function has two properties :</p><ol><li><p>Compression (described above)</p></li><li><p>It is easy to compute. Given h and x it is easy to compute h(x)</p></li></ol><ul><li><p>Side note: A hash is also called the <strong>digital fingerprint of some data</strong> because it represents the data uniquely. If we modified the data, another hash would be computed, and therefore we can securely say, that our data has been modified ⇾ the fingerprint has changed</p></li></ul><h2 id="h-what-is-a-cryptographic-hash" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What is a cryptographic hash?</h2><p>In order to become a cryptographic hash function, our hash function needs to fulfill more properties. Let&apos;s go through them.</p><p><strong>1) Pre-image resistance</strong></p><blockquote><p>&quot;If a function h is a one-way-function, then a function h-1 does not exist. It is therefore computationally infeasible to find the input to an output of h&quot;</p><p>-Gallersdörfer, U., Holl, P., &amp; Matthes, F. (2020). &quot;Blockchain-based Systems Engineering&quot;. Lecture Slides</p></blockquote><p>This means that there is no function to get the input value from an existing hash value (therefore it is called one-way, from the input to the hash but not the other way around)</p><p><strong>2) 2 nd Pre-image resistance</strong></p><blockquote><p>&quot;Given x it is computationally infeasible to find any second input x’ with x != x’ such that h(x) = h(x’).&quot;</p><p>-Gallersdörfer, U., Holl, P., &amp; Matthes, F. (2020). &quot;Blockchain-based Systems Engineering&quot;. Lecture Slides</p></blockquote><p>This means if you have the input and the hash its is very hard to find a different input that produces the same hash.</p><p><strong>3) Collision Resistance</strong></p><blockquote><p>&quot;A hash function h is said to be collision resistant if it is infeasible to find two values, x and y, such that x != y, yet h(x) = h(y).&quot;</p><p>-Gallersdörfer, U., Holl, P., &amp; Matthes, F. (2020). &quot;Blockchain-based Systems Engineering&quot;. Lecture Slides</p></blockquote><p>With collision resistance, our hash function makes sure that no two different inputs of arbitrarily length, produce the same hash.</p><p>I know what you are thinking, is this not the same as 2nd pre-image resistance I also thought about this and found a very good explanation for this 👇</p><blockquote><p>Collision resistance always implies property second preimage resistance but does not imply preimage resistance. The properties of second preimage resistance and collision resistance may seem similar but the difference is that in the case of second preimage resistance, the attacker is given a message to start with, but for collision resistance no message is given**; it is simply up to the attacker to find any two messages that yield the same hash value.</p></blockquote><blockquote><p>-Merkle-Damgård Construction Method and Alternatives: A Review. By Harshvardhan Tiwari</p></blockquote><h2 id="h-hashing-encryption" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">hashing != encryption</h2><p>To make this clear, hashing is not encryption. With encryption algorithms, we encrypt some sensitive information but with the goal of de-crypt in the future, that is, with hashing functions not possible (remember one-way property)</p><h2 id="h-use-cases-for-hashing" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Use cases for Hashing</h2><p>• Data fingerprinting</p><p>• Message integrity (error detection)</p><p>• Authentication</p><p>• Hiding information</p><p>• Commitment of information ( a vote for example)</p><h2 id="h-your-public-ethereum-address-is-actually-also-a-hash" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Your public Ethereum address is actually also a hash</h2><p>Did you know that your public Ethereum address is also a hash?</p><p>Here is a simple flow of how Ethereum creates a public address.</p><p>⚫ We start with randomly generated number k, we use the elliptic curve</p><p>multiplication to create a private key <strong>(k)</strong> and to derive the public key</p><p><strong>(K)</strong> from it.</p><p>⚫ We use the Keccak-256 to calculate the hash of the public key</p><p><code>Keccak256(K) =</code></p><p><code>2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9</code></p><p>⚫ We keep the last 20 bytes, which is then our Ethereum address</p><p>001d3f1ef827552ae1114027bd3ecf1f086ba0f9</p><p><em>Often a 0x is added in front of it, to make it clear that the address is a hexadecimal number</em></p><h2 id="h-summary" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Summary</h2><ul><li><p>Hash functions maps an input to a fixed output</p></li><li><p>If we add these 3 properties ( preimage | 2nd image resistance | collision resistance) to a hash function, we get an cryptographic hash function</p></li><li><p>Hashes are useful (even before blockchain) for many things like message integrity and hiding of information</p></li><li><p>Your public Ethereum address is a result of a keccak-256 hash function</p></li></ul><h2 id="h-thanks-for-reading" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Thanks for reading</h2><p>If you like this kind of content or have any questions (I am not an expert) let&apos;s connect</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/XamHans">🐦</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.linkedin.com/in/johannes-m%C3%BCller-6b8ba1198/">🧑‍💼</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.jhayer.tech/">📝</a></p></li></ul><p>PS: Interested in a web 3 job? ➡️ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.newdevsontheblock.com/">https://www.newdevsontheblock.com/</a></p><h3 id="h-resources" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Resources 📚</h3><ul><li><p>Lecture Slides from TUM Gallersdörfer, U., Holl, P., &amp; Matthes, F. (2020). &quot;Blockchain-based Systems Engineering&quot;</p></li><li><p>Mastering Ethereum, by Andreas M. Antonopoulos, Gavin Wood</p></li></ul>]]></content:encoded>
            <author>johannes-m-ller@newsletter.paragraph.com (Johannes Müller)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a3e9dc25228cb41be967d7794a824170287934a412886335761275833b81e3ba.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>