salida sha256()

Usé sha256()hash de una cadena y obtuve el siguiente resultado 0x0de69f56365c10550d05e65ae8229dd0686f7894a807830daec8caa879731f4dpara string Hello World2. Ahora quiero averiguar el byte inicial de la salida de sha256(), que es 'od' en este caso. Como el tipo de retorno sha256()es bytes32cómo leer los bytes iniciales de la salida. Aquí está el código que usé para obtener sha256()una cadena.

contract TestIntToString {
  function getSha256(string str) external pure returns (bytes32) {
    bytes32 hash = sha256(abi.encodePacked(str));

    return hash;
    //string y    = hash;
    }
}

Respuestas (1)

Dado que la sha256()función genera un bytes32, que es una matriz de bytes de tamaño fijo, puede acceder fácilmente al byte principal del hash, simplemente devolviendo hash[0].

Cómo verificar si el byte inicial es todo ceros.
al devolver hash[0], que es bytes1, da una salida como esta 0xod pero solo quiero od
Bueno, son el mismo número, es solo una cuestión de representación de cadenas.
puedes responder mi comentario1?
¡Oh sí! con respecto a su primera pregunta: hash[0] == byte(0) así como hash[0] == 0 hará el trabajo.
Oye, ¿puedes decir esto? Quiero obtener todas las cadenas con nonces de modo que sus bytes principales sean 0 de la salida sha256 ()
Supongo que no puede obtener todas esas cadenas en ningún momento factible. Esto parece una tarea bastante pesada desde el punto de vista computacional. Básicamente, necesitaría iterar a través del dominio de sha256, que es infinito, ya que cualquier cadena con una longitud arbitraria puede ser la entrada de una función hash: P
¿Qué pasa con las primeras 100 cadenas + nonce?