Solidity Keccak256与SHA3-256

这篇具有很好参考价值的文章主要介绍了Solidity Keccak256与SHA3-256。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 引言

SHA3由Keccak标准化而来,在很多场合下Keccak和SHA3是同义词,但在2015年8月SHA3最终完成标准化时,NIST调整了填充算法:SHA3-256(M) = KECCAK [512] (M || 01, 256)。所以标准的NIST-SHA3就和Keccak计算的结果不一样。
如对空字符串进行Keccak256 和 SHA3-256结果各不相同:

//Keccak256()结果:
c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
//SHA3-256()结果:
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

以太坊在开发的时候SHA3还在标准化中,所以采用了Keccak,所以Ethereum和Solidity智能合约代码中的SHA3是指Keccak256,而不是标准的NIST-SHA3,为了避免混淆,直接在合约代码中写成Keccak256是最清晰的。

2. Solidity中Keccak256与abi.encode和abi.encodePacked联合使用

	// 使用encodePacked存在哈希碰撞的问题
	// (AAA, BBB) -> AAABBB         
    // (AA, ABBB) -> AAABBB
    // 以上2种输入,哈希结果相同。
	function collisionExample(string memory _string1, string memory _string2)
    public pure returns (bytes32) {
        return keccak256(abi.encodePacked(_string1, _string2));
    }

	// 使用encode可避免哈希碰撞的问题
	// (AAA, BBB) -> AAABBB         
    // (AA, ABBB) -> AAABBB
    // 以上2种输入,哈希结果不同。
    function collisionExample2(string memory _string1, string memory _string2)
    public pure returns (bytes32) {
        return keccak256(abi.encode(_string1, _string2));
    }

参考资料

[1] keccak和sha3的区别
[2] Which cryptographic hash function does Ethereum use?
[3] Difference between keccak256 and sha3
[4] does keccak256 and sha3 reproduce the same hash ?
[5] Hashing Functions In Solidity Using Keccak256文章来源地址https://www.toymoban.com/news/detail-515005.html

到了这里,关于Solidity Keccak256与SHA3-256的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python实现z-score标准化和0-1标准化

    目录 标准化处理 0-1标准化: z-score标准化: 1、用自带的函数来操作 实现z-score标准化 实现0-1标准化 2、自定义函数实现 实现z-score标准化 实现0-1标准化 对输出结果范围有要求,数据较为稳定的,不存在极端的最大最小值 数据存在异常值和较多的噪音,可以间接通过中心化避

    2024年02月11日
    浏览(44)
  • LA@二次型标准形@标准化问题介绍和合同对角化@二次型可标准化定理

    如果二次型只含有变量的平方项,则称之为 二次型的标准形 或 法式 ,即 f ( y 1 , ⋯   , y n ) f(y_1,cdots,y_n) f ( y 1 ​ , ⋯ , y n ​ ) = ∑ i = 1 n k i y i 2 sum_{i=1}^{n}k_iy_i^2 ∑ i = 1 n ​ k i ​ y i 2 ​ 标准形的矩阵式 f ( y 1 , ⋯   , y n ) = ∑ i n k i y i 2 = ( y 1 , y 2 , ⋯   , y n ) ( k 1 0 ⋯

    2024年02月09日
    浏览(54)
  • 不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

    数据的标准化是将数据按照一定的 数学规则进行转换 ,使得数据满足特定的标准,通常是使数据满足正态分布或标准差为1的标准。 标准化的常见方法包括 最小-最大标准化 和 Z-score标准化 。最小-最大标准化将数据映射到 [0,1 ]的范围内,最小-最大标准化将数据映射到0-1区间

    2024年01月21日
    浏览(55)
  • 数据标准化方法

    今天看到了“指数移动平均窗口标准化”,就研究了一下这是个啥东西,然后又顺便看了一下其他的数据标准化方法,这里顺便记录一下,方便以后查阅。 zscore标准化是一种 基于数据分布的标准化方法 。它的基本思想是 将数据转换为均值为0,标准差为1的分布 ,从而使得数

    2023年04月22日
    浏览(51)
  • GEE:影像标准化

    本文将介绍在Google Earth Engine (GEE)平台上进行影像标准化的公式和代码。 影像标准化是一种预处理方法,用于将不同区域、不同时间、不同传感器拍摄的影像进行比较和分析。在GEE平台上进行影像标准化,可以使用本文代码,本文以EVI为例,将影像进行了标准化处理。 其结

    2023年04月09日
    浏览(62)
  • 用UiPath实现网页抓取——表格数据提取-1-单击选择分类-ISO标准化-01-综合、术语、标准化、文献目录获取

    准备获取目录的链接是 全国标准信息公告服务平台链接: https://std.samr.gov.cn/search/iso?tid=q= 第一步,标注啊类型选择——ISO 第二步,标准化状态选择——现行 第三步,ICS分类选择——01_综合、术语标准化、文献 将数据分别复制到excel文件中,如下图。 由于国际标准分类号在

    2024年02月04日
    浏览(56)
  • 标准化归一化方法

    分别是0-1标准化(Max-Min Normalization)和Z-Score标准化。 1.1 0-1标准化方法 每一列中的 元素减去当前列的最小值 , 再除以该列的极差 。 不过在深度学习领域,我们更希望输入模型的数据是Zero-Centered Data,此时 Z-Score标准化会更加合适。 1.2 Z-Score标准化 Z-Score标准化并不会将数据

    2023年04月12日
    浏览(44)
  • python三种数据标准化

    数据变换是数据准备的重要环节,它通过 数据平滑 、 数据聚集 、 数据概化 和 规范化 等方式将数据转换成适用于数据挖掘的形式。常见的变换方法: 1.数据平滑:去除数据中的噪声,将连续数据离散化。这里可以采用分箱、聚类和回归的方式进行数据平滑 2.数据聚集:对

    2024年02月07日
    浏览(52)
  • 一文详解 DolphinDB SQL 标准化

    在脚本层面,自 1.30.22 / 2.00.10 版本起,DolphinDB SQL 开始支持: 全大写或全小写的书写方式 脚本的换行不影响语法解析,但存在两种特殊情况: 组合不允许拆分,如 order by, group by, context by, pivot by, union all, inner join, nulls first 等。 不使用 as 指定字段别名时,别名

    2024年02月13日
    浏览(38)
  • 蔡春久:主数据标准化如何建设

    亿信华辰「2023数字赋能季」主数据管理专场第一期成功举办。我们邀请到了中国数据标准化及治理专家蔡春久为大家带来主数据管理从理论到工具层面的分享,全程干货,深度解读,以下是演讲全文。 蔡春久:中国大数据技术标准推进委员会数据资产专家、中电标协企业信

    2023年04月25日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包