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函数,如下图所示:

运行结果如下图

本文探讨了FISCOBCOS国密版区块链如何利用SM3算法替代标准keccak256函数进行哈希运算。通过智能合约测试证实,在国密版中keccak256底层实际上调用了SM3算法。
最低0.47元/天 解锁文章
9269

被折叠的 条评论
为什么被折叠?



