FISCO BCOS 国密版的哈希函数

FISCO BCOS既可以部署国密版的区块链,又可以部署非国密版的区块链,同时两者都支持solidity语言编写的智能合约。但让我好奇的是,在国密版的链上有没有实现对应的国密版哈希函数,验签函数?

例如,在非国密版的区块链上,可以用solidity写keccak256函数来对一段内容做哈希运算。那在国密版中是不是有对应的sm3函数来做这样的哈希运算?还是国密版的keccak256函数底层使用了sm3函数?为了弄清楚这一点,我写了一些测试代码进行测试

智能合约代码如下:

pragma solidity >=0.4.0 <0.7.0;

contract HelloWorld2 {
    
	string hello = "hello, world";

	function sayHello() public view returns (string memory) {
		return hello;
	}

    function hashTest(bytes memory _input) public pure returns(bytes32) {
        bytes32 result = sha256(_input);
        return result;
    }
    
    function kehashTest(bytes memory _input) public pure returns(bytes32) {
        bytes32 result = keccak256(_input);
        return result;
    }
}

在webase平台上部署运行kehashTest函数,如下图所示:

运行结果如下图所示:

然后,在线下我写了测试代码,发现是用国密的SM3算法算出来的。部分代码如下:

try {
			bytes = Hex.decodeHex("deadbeef");
		} catch (DecoderException e) {
			e.printStackTrace();
		}
System.out.println(SM3.byteArrayToHexString(SM3.hash(bytes)));

从而证明了在国密版的链上,keccak256函数底层实际上使用的是SM3算法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值