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:
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