Solidity.

帖子

分享您的知识。

0x0375...f041.
Jul 10, 2023
专家问答

如何在 solidity 中反转 keccak256

我需要以下代码的帮助,其中给了我一个参数的 keccak256,需要反转它才能找到解决挑战的参数

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
2
2
分享
评论
.

答案

2
0x7a36...df11.
Jul 15 2023, 13:06

你无法反转 keccak256 哈希输出来找到它的输入. 这个属性是区块链网络实现数据完整性和安全性的基础. keccak256 被设计为单向函数:从输入数据生成哈希值在计算上很容易,但是仅给定哈希输出就生成原始输入在计算上是不可行的. 这里你只能像提示一样强行出局. 键入 “querty” 尝试输入. 我无法自己复制. 你看你的合同是从 afoundryCourseChallenge 合同继承下来的. 你能附上这个合约的代码吗,MB 有一些有趣的东西)

1
评论
.
foufrix.
Jul 21 2023, 10:14

正如之前的消息所说,不可能反转 keccak256,因为它会破坏安全哈希.

我也参加了你所说的课,这里有两个提示:

-Hint: It's a very common...=> 看看最常用的密码是什么 -https://arbiscan.io/address/0xf988Ebf9D801F4D3595592490D7fF029E438deCa 是有问题的合同. 因为我们在区块链上,所以你可以看到所有东西!看看其他人的交易;)

0
评论
.

你知道答案吗?

请登录并分享。

我们使用 cookie 确保您在我们的网站上获得最佳体验。
更多信息