Publicación
Comparte tu conocimiento.
Cómo revertir keccak256 en Solidity
Necesito ayuda con el siguiente código en el que se me da el keccak256 de un parámetro y necesito invertirlo para encontrar el parámetro y resolver el desafío
contract LessonFive is AFoundryCourseChallenge {
error LessonFive__WrongPassword();
bytes32 public constant EXPECTED_BYTES = 0xb68fe43f0d1a0d7aef123722670be50268e15365401c442f8806ef83b612976b;
/*
* CALL THIS FUNCTION!
*
* Use all the help you can on this one! Google, AI, friends, peeranha, ethereum stack exchange, etc.
*
* Hint: It's a very common...
*
* @param password - A string that when you keccak256 it will return the `EXPECTED_BYTES`!
* @param yourTwitterHandle - Your twitter handle. Can be a blank string.
*/
function solveChallenge(string memory password, string memory yourTwitterHandle) external {
if (keccak256(abi.encodePacked(password)) == EXPECTED_BYTES) {
_updateAndRewardSolver(yourTwitterHandle);
} else {
revert LessonFive__WrongPassword();
}
}
}
- Smart Contract
- Solidity
Respuestas
2no puedes invertir una salida de hash keccak256 para encontrar su entrada. Esta propiedad es fundamental para que las redes de cadenas de bloques logren la integridad y la seguridad de los datos. keccak256 está diseñado para ser una función unidireccional: es fácil desde el punto de vista computacional generar un hash a partir de los datos de entrada, pero es inviable desde el punto de vista computacional generar la entrada original si solo se obtiene la salida del hash. Aquí solo se puede extraer mediante fuerza bruta, como en una pista. Escriba «querty» para intentar introducirla. No puedo reproducirme. Verás, tu contrato se hereda del contrato de AfoundryCourseChallenge. Puedes adjuntar el código de este contrato (MB, hay algo interesante)
Como decía el mensaje anterior, es imposible revertir keccak256 ya que rompería el hash de seguridad.
También he participado en la lección de la que hablas, y ahí hay dos consejos:
Hint: It's a very common...
=> Eche un vistazo a cuáles son las contraseñas más utilizadas- https://arbiscan.io/address/0xf988Ebf9D801F4D3595592490D7fF029E438deCa es el contrato en cuestión. Como estamos en la cadena de bloques, ¡puedes verlo todo! Eche un vistazo a las transacciones de otras personas;)
Sabes la respuesta?
Inicie sesión y compártalo.
Solidity is an object-oriented, high-level language for implementing smart contracts. It is a curly-bracket language designed to target the Ethereum Virtual Machine (EVM).
- My ERC721 contract successfully deploys, but I can't verify the contract's source code with hardhat21
- Solidity y ethers.js calculan diferentes direcciones a partir de la misma firma21
- no puedo entender cuáles son las ubicaciones (uint256)22
- Cómo revertir keccak256 en Solidity22
- Aclaración sobre los reembolsos de gas y comparación entre «requerir» y «revertir» en los contratos inteligentes21