Solidity 提供了内置的加密函数。这里主要针对Keccak256散列函数,keccak256用于计算输入值的Keccak-256哈希值。应用场景有如下几个:从输入创建确定性的唯一 ID;提交-显示方案;紧凑的加密签名(通过签名散列而不是更大的输入)。这些编码函数可以用来构造函数调用数据,而不用实际进行调用。
实验目的
了解keccak256 函数实际意义;学会使用keccak256 函数(正确传参)。
实验要求
1. 请查看代码,分别调用函数callKeccak256,callKeccak256_2,查看他们的返回值是否一致。再将函数callKeccak256中return的值”ABC”改为”ABCabc”,重新编译部署,检查与函数callKeccak256_2的返回值是否一样。
2. 请根据参数类型为函数传入参数并调用。思考加密函数在solidity中的作用与应用场景。
以下是本次实验所使用到的测试代码,请使用remix编辑器完成该实验
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Test {
// 函数参数只能一个
function callKeccak256() public pure returns(bytes32 result){
return keccak256("ABC");
}
// 多个参数 ("ABC","abc")
function callKeccak256_2() public pure returns(bytes32 result){
return keccak256(abi.encodePacked("ABC","abc"));
}
// 参数可以是不同类型
function hash(string memory _text,uint _num,address _addr) public pure
returns (bytes32) {
return keccak256(abi.encodePacked(_text, _num, _addr));
}
}
下面是本次实验所配套的视频教程:
