Bài viết
Chia sẻ kiến thức của bạn.
Làm thế nào để đảo ngược keccak256 trong độ rắn
Tôi cần trợ giúp với đoạn mã sau, nơi tôi được cung cấp keccak256 của một tham số và cần đảo ngược nó để tìm tham số để giải quyết thách thức
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
Câu trả lời
2bạn không thể đảo ngược một đầu ra băm keccak256 để tìm đầu vào của nó. Thuộc tính này là nền tảng cho cách mạng blockchain đạt được tính toàn vẹn và bảo mật dữ liệu. keccak256 được thiết kế để trở thành một hàm một chiều: dễ dàng tính toán để tạo ra một hàm băm từ dữ liệu đầu vào, nhưng nó không thể tính toán được để tạo đầu vào ban đầu chỉ với đầu ra băm. Ở đây bạn chỉ có thể loại bỏ vũ phu như trong một gợi ý. Loại “querty” để cố gắng nhập. Tôi không thể tự sinh sản. Bạn thấy hợp đồng của bạn được kế thừa từ hợp đồng AfoundryCourseChallenge. Bạn có thể đính kèm mã của hợp đồng này không, MB có một cái gì đó thú vị)
Như thông báo trước đã nói, không thể đảo ngược keccak256 vì nó sẽ phá vỡ hàm băm bảo mật.
Tôi cũng đã tham gia vào bài học mà bạn đang nói đến, và có hai gợi ý ở đó:
Hint: It's a very common...
=> Hãy xem những mật khẩu được sử dụng nhiều nhất là gì- https://arbiscan.io/address/0xf988Ebf9D801F4D3595592490D7fF029E438deCa là hợp đồng được đề cập. Bởi vì chúng tôi đang ở trên blockchain, bạn có thể thấy mọi thứ! Hãy xem các giao dịch của người khác;)
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
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 và ethers.js Tính toán các địa chỉ khác nhau từ cùng một chữ ký21
- không thể hiểu các vị trí là gì (uint256)22
- Làm thế nào để đảo ngược keccak256 trong độ rắn22
- Làm rõ về hoàn tiền gas và so sánh giữa “yêu cầu” và “hoàn lại” trong hợp đồng thông minh21