Solidity keccak256加密

为了隐藏起某些信息,且保证这些信息不被篡改,需要用到哈希算法。keccak256算法则可以将任意长度的输入压缩成64位16进制的数,且哈希碰撞的概率近乎为0。
在solidity编程中,有时候会以keccak值进行输入,这样其他节点就不知道你的具体信息是什么。当一定的时间过去后,你再公布你的具体信息,其他节点就可以验证你公布的信息的keccak值是否与之前申明的一致,从而判断你有没有撒谎。
用remix生成keccak值

pragma solidity 0.6.2;
contract TestKeccak 
{    
     address secret;

     constructor(address _secret)public {
         secret = _secret;
     }
    
     function encode() public view returns (bytes32 result) {  
        result =  keccak256(abi.encodePacked(secret));
     }
}

其中的address secret的类型根据自己需求来定义比如uint之类的,当然定义不同加密出来的keccak256值也是不同的。
编译好合约后,我们设置数值,如下图:

部署好合约后,运行encode函数得到keccak加密值:

好啦,我们这样就相当于生成了一个凭证了。凭着这个哈希值,别人就可以在后面的某个时间点判断我们之前的预判是否为真。

给TA打赏
共{{data.count}}人
人已打赏
技术文档

修改HOSTS快速访问GitHub

2022-2-9 3:33:44

技术文档

Frida注入JS过一会自动停止Process terminated

2022-5-7 1:42:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索