0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

哈希算法函数的定义描述及其特征介绍

开发MrsFu123 来源:开发MrsFu123 作者:开发MrsFu123 2022-06-28 21:02 次阅读

哈希的本质是一个采用哈希算法的数学函数,它被广泛应用于区块链中构建区块以及确认交易信息的完整性上。

什么是哈希算法?哈希算法是密码学中的一个重要算法,哈希的英文为Hash。

哈希算法有一个输入和一个输出,其输入称为消息,输出值是根据消息内容计算出的值,称为哈希值(又或称为摘要)

哈希算法函数的定义描述:

(1)输入消息长度任意

(2)输出哈希值长度固定

简单的理解,就是一串任意长的数据经过哈希函数的计算后,生成一串长度固定的短数据。

当今区块链技术中大量使用的哈希算法函数是SHA-256。SHA-256是SHA-2算法家族中的一种,SHA全称是安全哈希算法(Secure Hash Algorithm)。SHA-256的输入消息长度为任意位数,其输出的哈希值长度固定为二进制的256位。SHA-256具备密码哈希函数的基本特性

哈希函数有三个重要的特征。

第一,哈希的单向性、就是我们只能够把任意长度的数据,通过哈希函数生成一个固定长度的哈希值,反过来却不可能通过这个哈希值再推导出原来的输入数据,这就是哈希的单向性。

很多人好奇区块链是怎么形成的,简单理解,区块链=区块+链。例如我们把一个区块打包以后就会通过哈希函数计算出一个哈希值,这个值就会存放到下一个区块中,下一个区块里的哈希值就把上一个区块给锁定了,这就是哈希锁定。区块链的不可更改就是从这里来的,因为如果你把前面的区块数据篡改了,那和后面区块里的哈希值,就不能够对应了。在区块链中,每一个区块都对上一个区块进行内容锁定,这就是哈希锁定。

第二,哈希的唯一性。我们把一个任意长的数据通过哈希函数生成一个哈希值,生成的这个哈希值是唯一的。不会存在两个不同的输入生成的哈希值相同的这种情况。但是这句话是有问题的,为什么呢?你把任意长数据变成短数据,或者说你把大的文件变成一个短的哈希值,在科学上它是有一定的概率会形成相同的哈希值的,只是这个概率极低极低,到目前为止,采用SHA256算法的哈希函数还没有发生过相同哈希值的碰撞事件,所以说哈希的唯一性,就是这么来的。

第三,哈希的离散性。离散性是什么意思呢,就是两个非常相近的文件,或者说两个只相差一位数的数据,计算出来的两个哈希值却是天壤之别,是没有任何相似的地方的,这就是哈希的离散性。这个特性有效地规避了一些特定的攻击,如果两个文件只相差那么一丢丢,他计算出来的哈希值也很相近的话,是很容易遭受到攻击的。以上所述是哈希的三个重要特征。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数学函数
    +关注

    关注

    0

    文章

    9

    浏览量

    6315
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    10690
收藏 人收藏

    评论

    相关推荐

    PHP用户定义函数详细讲解

    描述 在所有编程和脚本语言中,函数是可以在程序中重复使用的语句块。在 PHP 中,函数的概念与另一种语言(如“C”)中的概念相同。标准 PHP 发行版中有 1,000 多个内置函数。除
    的头像 发表于 03-20 14:27 79次阅读

    如何给C语言中的函数定义两个不同的名字?

    最近有位哥问我,如何给C语言中的函数定义两个不同的名字?就是这两个名字都是指向同一个函数,同一个地址,而且两个名字都可以当做函数来用的那种。
    的头像 发表于 12-19 16:21 315次阅读

    sgnx函数的概念、特征和用途

    的值为1;当自变量为负时,sgnx函数的值为-1;当自变量为零时,sgnx函数的值为0。 在本文中,我将详细介绍sgnx函数的概念、特征和用
    的头像 发表于 12-11 13:38 706次阅读

    RRT算法Matlab实现 主函数部分

    初始化随机树 初始化随机树,定义树结构体tree以保存新节点及其父节点,便于后续从目标点回推规划的路径。 %% 初始化随机树 tree.child = []; % 定义树结构体,保存新节点及其
    的头像 发表于 11-24 16:25 230次阅读

    c语言max函数在哪个库

    C语言的max函数并不属于标准C库,它通常是由程序员自己编写的一个宏定义。max函数用于比较两个数的大小,返回较大的数值。 为了提供更多详实的信息,下面将详细介绍C语言中max
    的头像 发表于 11-22 10:18 1547次阅读

    python如何定义一个函数

    ()。但你也可以自己创建函数,这被叫做用户自定义函数。 二、定义一个函数 你可以定义一个由自己想
    的头像 发表于 11-14 11:26 420次阅读

    C语言中宏函数定义和用法

    函数是一种特殊的函数宏,与普通函数宏不同的是,它可以拥有多条语句和局部变量,从而实现更复杂的功能。它的定义类似于普通函数,但用大括号包裹起
    发表于 10-11 11:32 756次阅读
    C语言中宏<b class='flag-5'>函数</b>的<b class='flag-5'>定义</b>和用法

    为什么需要进程 特征定义有哪些

    为什么需要进程 通常程序不能并发执行,因为程序并发执行的结果,是不可再现的。为了使程序,可以并发执行,且能对其加以描述和控制,引入了进程的概念。 进程的特征定义 进程是程序的一次执行,是系统进行
    的头像 发表于 10-08 15:29 371次阅读
    为什么需要进程 <b class='flag-5'>特征</b>和<b class='flag-5'>定义</b>有哪些

    python定义函数与调用函数的顺序

    定义函数与调用函数的顺序 函数定义后,本身是不会自动执行的,只有在被调用后,函数才会被执行,得
    的头像 发表于 10-04 17:17 583次阅读

    基于Rust语言Hash特征的基础用法和进阶用法

    ,包括Hash trait、HashMap、HashSet等,本教程将详细介绍Rust语言Hash特征的基础用法和进阶用法。 基础用法 使用Hash trait 在Rust语言中,Hash trait
    的头像 发表于 09-19 16:02 737次阅读

    STM32助力新产品设计提升安全性

    对称加密算法、AES-ECB模式缺陷与解决办法、Hash哈希函数、Hash哈希算法等。
    发表于 09-05 07:40

    亥姆霍兹函数定义 亥姆霍兹方程的用途 亥姆霍兹方程的应用

    亥姆霍兹函数定义 亥姆霍兹方程的用途 亥姆霍兹方程的应用 亥姆霍兹函数定义 亥姆霍兹函数也称为自由能或Gibbs自由能,它是热力学中的一
    的头像 发表于 08-29 17:05 2563次阅读

    Linux内核分析 端口哈希

    是用来封装各种协议的绑定哈希表,具体定义如下所示,这个结构体在[Linux内核角度分析服务器Listen细节中介绍过,具体地,struct inet_bind_hashbcket是bind相关的
    的头像 发表于 07-31 11:03 427次阅读
    Linux内核分析 端口<b class='flag-5'>哈希</b>桶

    加密算法如何保护嵌入式设计

    密码学与用于实现它的算法一样强大。在现代密码学中,我们拥有基本的XOR函数,以及当今许多应用程序中使用的更复杂的算法。在这篇博文中,我将概述一些关键算法,包括安全
    的头像 发表于 06-28 10:16 311次阅读
    加密<b class='flag-5'>算法</b>如何保护嵌入式设计

    Dubbo负载均衡策略之一致性哈希

    本文主要讲解了一致性哈希算法的原理以及其存在的数据倾斜的问题,然后引出解决数据倾斜问题的方法,最后分析一致性哈希算法在Dubbo中的使用。通
    的头像 发表于 06-16 15:30 318次阅读
    Dubbo负载均衡策略之一致性<b class='flag-5'>哈希</b>