¿Qué es Hashing en Solidity?

Una función hash criptográfica es un algoritmo que toma una cantidad arbitraria de datos como entrada y produce el texto cifrado de tamaño fijo. Incluso un ligero cambio en la entrada da una salida completamente diferente.

Solidity proporciona las siguientes funciones criptográficas:

Función

Propiedades

keccak256(bytes de memoria) devuelve (bytes32) Calcula el hash Keccak-256 de la entrada
sha256(bytes de memoria) devuelve (bytes32) Calcula el hash SHA-256 de la entrada
ripemd160(bytes de memoria) devuelve (bytes20)  Calcule el hash RIPEMD-160 de la entrada
sha256(bytes de memoria) devuelve (bytes32)  Calcula el hash SHA-256 de la entrada
ecrecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) devuelve (dirección) Recupere la dirección asociada con la clave pública de la 
firma de curva elíptica utilizada para la criptografía o devuelva 
cero si se produce un error.
Los parámetros corresponden a los valores de la Firma ECDSA  .

Ethereum usa Keccak para hash, que es similar pero no igual a SHA_256. Para la prueba de trabajo, utiliza un esquema personalizado llamado ethash que está diseñado para ser resistente a ASIC.

Ejemplo: en el siguiente ejemplo, se crea un contrato inteligente para tomar una string como entrada y dar un hash de 8 dígitos como salida.

Solidity

// 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 = 
             uint(keccak256(abi.encodePacked(_str)));
               
        // Returning the generated hash value 
        return random % hashModulus;
    }
  
}

Aporte:

GeeksForGeeks

Producción:

Hash value

Referencia: https://solidity.readthedocs.io/en/v0.7.1/

Publicación traducida automáticamente

Artículo escrito por ciberexplosion y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *