帖子
分享您的知识。
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
分享
评论
答案
2Jul 15 2023, 13:06
你无法反转 keccak256 哈希输出来找到它的输入. 这个属性是区块链网络实现数据完整性和安全性的基础. keccak256 被设计为单向函数:从输入数据生成哈希值在计算上很容易,但是仅给定哈希输出就生成原始输入在计算上是不可行的. 这里你只能像提示一样强行出局. 键入 “querty” 尝试输入. 我无法自己复制. 你看你的合同是从 afoundryCourseChallenge 合同继承下来的. 你能附上这个合约的代码吗,MB 有一些有趣的东西)
1
评论
foufrix10
Jul 21 2023, 10:14正如之前的消息所说,不可能反转 keccak256,因为它会破坏安全哈希.
我也参加了你所说的课,这里有两个提示:
-Hint: It's a very common...
=> 看看最常用的密码是什么
-https://arbiscan.io/address/0xf988Ebf9D801F4D3595592490D7fF029E438deCa 是有问题的合同. 因为我们在区块链上,所以你可以看到所有东西!看看其他人的交易;)
0
评论
你知道答案吗?
请登录并分享。
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).
35帖子43答案
热门帖子