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));
    }
}

下面是本次实验所配套的视频教程: