// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
contract CryptoFunctions {
// cryptoDemo function: Demonstrates the use of two cryptographic hash functions - SHA-256 and Keccak256.
// It takes no inputs and returns two hash values, one for each hash function, both generated from the same string "r".
function cryptoDemo() public pure returns (bytes32, bytes32){
// SHA-256 hash function applied to the string "r"
bytes32 sha256Hash = sha256("r");
// Keccak256 hash function (the same hashing algorithm used by Ethereum) applied to the string "r"
bytes32 keccak256Hash = keccak256("r");
// Returning both hashes
return (sha256Hash, keccak256Hash);
}
// ripemd160Hash function: Computes the RIPEMD-160 hash of a given input string.
// This function takes a string as input and returns its RIPEMD-160 hash.
function ripemd160Hash(string memory _input) public pure returns (bytes20) {
// Encoding the string to bytes and applying the RIPEMD-160 hash function
return ripemd160(abi.encodePacked(_input));
}
// concatenateStrings function: Concatenates two input strings into one.
// This function takes two strings as inputs and returns their concatenation.
function concatenateStrings(string memory _str1, string memory _str2) public pure returns (string memory) {
// Using abi.encodePacked to efficiently concatenate the strings and then converting the result back to a string
return string(abi.encodePacked(_str1, _str2));
}
}
//Deploy screenshot: