3. Variables, Operators, Arrays and mapping

What is Hashing in Solidity?

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

Leave a Reply

Your email address will not be published. Required fields are marked *