使用solidity智能合约实现sha256加密和验证

智能合约的sha256计算是基于bytes的而不是string的,如果想计算string的sha256加密值,要先编码字符串为byte类型才能计算。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract HTLC {

    // 计算字符串的SHA-256哈希值
    function calculateSHA256(string memory input) public pure returns (bytes32) {
        return sha256(abi.encodePacked(input));
    }

    // 计算任意数据的SHA-256哈希值
    function calculateSHA256ForData(bytes memory input) public pure returns (bytes32) {
        return sha256(input);
    }

    function withdraw(bytes32 _secret, bytes32 _preimage) public pure returns (bool) {
        require(sha256(abi.encodePacked(_preimage)) == _secret, "Invalid preimage");
        // 执行提取操作,例如发送资金等
        return true;
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值