Hashing

O hashing é comumente utilizado para diversos propósitos, como verificar a integridade dos dados, criar identificadores únicos para conjuntos de dados e muito mais. Solidity fornece funções de hash incorporadas que implementam algoritmos de hash seguros e eficientes.

Duas funções merecem destaque: keccak256 e sha256.

O algoritmo keccak256 é uma versão do SHA-3 (Secure Hash Algorithm 3) e é amplamente utilizado no ecossistema Ethereum, por exemplo, para calcular endereços Ethereum, gerar identificadores únicos, criar provas de existência de dados (através de merkle trees) e na implementação de mecanismos de compromisso.

sha256 faz parte da família de algoritmos SHA-2 e é amplamente utilizado fora do Ethereum para garantir a integridade dos dados. Embora menos comum no Ethereum que keccak256, sha256 é usado quando é necessária interoperabilidade com sistemas que utilizam SHA-256 como padrão de hashing.

Funções de hashing

Funções
Resultado

keccak256(bytes memory)

Retorna o hash Keccak-256 da entrada

sha256(bytes memory)

Retorna o hash SHA-256 da entrada

ripemd160(bytes memory)

Retorna o hash RIPEMD-160 da entrada

ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s)

Usando uma assinatura de curva elíptica, retorna o endereço associado à chave pública, ou em caso de erro, retorna zero.

Exemplo

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HashingExample {

    // Função para calcular o hash de uma string
    function calculateHash(string memory _input) public pure returns (bytes32) {
        return keccak256(abi.encodePacked(_input));
    }
}

Last updated