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:
Function
|
Properties
|
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.
Solidity
pragma solidity ^0.6.6;
contract helloGeeks
{
uint hashDigits = 8;
uint hashModulus = 10 ** hashDigits;
function _generateRandom(string memory _str)
public view returns (uint)
{
uint random =
uint(keccak256(abi.encodePacked(_str)));
return random % hashModulus;
}
}
|
Input:
GeeksForGeeks
Output:

Reference: https://solidity.readthedocs.io/en/v0.7.1/
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!