Open In App
Related Articles

What is Hashing in Solidity?

Improve Article
Save Article
Like Article

A cryptographic hash function is an algorithm that takes an arbitrary amount of data as input and produces the enciphered text of fixed size. Even a slight change in the input gives a completely different output.

Solidity provides the following cryptographic functions:



keccak256(bytes memory) returns (bytes32) Computes the Keccak-256 hash of the input
sha256(bytes memory) returns (bytes32) Computes the SHA-256 hash of the input
ripemd160(bytes memory) returns (bytes20)  Compute RIPEMD-160 hash of the input
sha256(bytes memory) returns (bytes32)  Computes the SHA-256 hash of the input
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) returns (address) Recover the address associated with the public key from 
Elliptic curve signature used for cryptography or return 
Zero if an error occurs. The parameters correspond to ECDSA 
Signature values.

Ethereum uses Keccak for hashing which is similar but not the same as SHA_256. For proof of work, it uses a custom scheme called ethash which is designed to be ASIC-resistant.

Example: In the below example, a smart contract is created to take a string as input and give an 8 digit hash as an output.


// pragma version
pragma solidity ^0.6.6; 
// Creating a contract
contract helloGeeks 
    // We want hash to be of 8 digits 
    // hence we store 10^8 which is 
    // used to extract first 8 digits 
    // later by Modulus 
    uint hashDigits = 8;
    // Equivalent to 10^8 = 8
    uint hashModulus = 10 ** hashDigits; 
    // Function to generate the hash value
    function _generateRandom(string memory _str) 
        public view returns (uint) 
        // "packing" the string into bytes and 
        // then applying the hash function. 
        // This is then typecasted into uint.
        uint random = 
        // Returning the generated hash value 
        return random % hashModulus;




Hash value


Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!

Last Updated : 11 May, 2022
Like Article
Save Article
Similar Reads