加密哈希函数和非加密哈希函数的区别

加密哈希函数和非加密哈希函数的区别:1、安全性不同;2、作用不同;3、使用场景不同。安全性不同是指加密哈希函数是一种安全性更高的哈希函数,它可以提供一定的数据完整性保护和数据防篡改能力,非加密哈希函数安全性较低。

一、加密哈希函数和非加密哈希函数的区别

1、安全性不同

加密哈希函数:加密哈希函数是一种安全性更高的哈希函数,它可以提供一定的数据完整性保护和数据防篡改能力。加密哈希函数使用高强度的算法,如SHA-256、SHA-512、MD5等,能够抵御一定的攻击手段,并且具有更高的安全性保障。

非加密哈希函数:非加密哈希函数虽然也可以被用于数据校验和其他类似的场景,但是其安全性相对较低,易受到暴力破解、冲突攻击等攻击手段的影响。

2、作用不同

加密哈希函数:加密哈希函数旨在保证一系列的安全属性。它们大部分都很难发生碰撞或是被找出加密的原文,而且哈希值看起来是随机的。

非加密哈希函数:非加密哈希函数只是尽力去避免非恶意输入产生的碰撞;或是用于检测出数据的意外改变(CRC,循环冗余校验);还有一些用于将Object分配到hash table的不同的哈希桶(hash table是一种数据结构,可以参考java中hash table的实现)中,并尽量产生较少的碰撞。由于较弱的要求,这些哈希函数数目很多。

3、使用场景不同

加密哈希函数:加密哈希函数主要用于数字签名、消息认证码等需要保证数据可靠性和安全性的场景。

非加密哈希函数:非加密哈希函数则更多地被用于简单数据校验、散列函数、校验和计算等场景。

二、加密哈希函数简介

加密哈希函数是一个哈希函数,它接受输入或消息并转换为固定大小的字节串。该字节串被称为哈希值或消息。加密哈希函数的主要功能是在由逻辑和数学支配的无需信任的网络中确保信息的完整性。它旨在确保拥有区块数据副本的所有网络用户间的通信是可信的。加密哈希函数可以输入任何字符串,并且只会产生固定长度的输出值,还具有高效的计算速率。

加密哈希函数的属性

1、无冲突的(Collision-free)

不同的Input,一定会产生不同的输出结果,也就是不同的哈希值。因此,当A和B的哈希值相同,就证明了A等于B,比如说如果我生日数字的哈希值,和你生日数字的哈希值一样时,就表示我们的生日一样。这有什么用呢?最主要的是,它让我们可以很进行高效的验证。假设我今天手中有两本书,看起来好像一样,但我又没办法确定,除非我一页页每一个字去核对,要花费相对多时间。其实,我只要取得这两本书的哈希值,就能轻易验证这两本书是不是一模一样。

2、函数是单向的(Hiding)

很难从哈希值,倒推回去算出输出值。也就是说,你可以对密码和档案Hash之后,拿来使用、验证、发布,而不会危及你密码的安全性。

3、支持解谜的(Puzzle-friendly)

具体来说,就是无法依靠选择,产生出你想要指定的哈希值,比如你想要让哈希值是111111,你无法知道要输入什么字串,只能不停尝试,直到111111出现为止。你肯定常常听到的“挖矿”,其实就是矿工们去竞争、去寻找一个随机常数,让整个区块的哈希值落在目标区域内。今天先不谈这个,只是先让你知道Puzzle-friendly属性对于加密货币领域也是相对重要的一环。

三、非加密哈希函数简介

只是试图避免非恶意输入的冲突。作为较弱担保的交换,它们通常更快。如果数据量小,或者不太在意哈希碰撞的频率,甚至可以选择生成哈希值小的哈希算法,占用更小的空间。常见的非加密哈希有MurMurHash,CRC32,DJB等。

延伸阅读

哈希函数简介

哈希函数指将哈希表中元素的关键键值映射为元素存储位置的函数。一般的线性表,树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较”的基础上,查找的效率依赖于查找过程中所进行的比较次数。 理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。

文章标题:加密哈希函数和非加密哈希函数的区别,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/48530

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW认证作者
上一篇 2023年4月2日
下一篇 2023年4月2日

相关推荐

  • 敏捷开发中的自动化测试是如何进行的

    敏捷开发中的自动化测试过程是明确测试目标、编写测试计划、选择自动化测试工具、编写测试脚本和执行自动化测试。详细介绍:1、明确测试目标,包括确定要测试的功能或特性、测试的预期结果以及测试的约束条件等;2、编写测试计划,包括测试场景、测试数据、测试步骤、预期结果和异常处理;3、选择自动化测试工具,根据项目需求和团队技术能力,选择合适的自动化测试工具等等。

    2023年10月23日
    37000
  • java web和java有什么区别

    Java Web与Java的区别主要表现在:1、应用领域不同;2、所需技术栈不同;3、开发复杂度不同;4、应用环境不同;5、开发工具不同。简单说来,Java Web主要用于开发网页应用,而Java是一种通用的编程语言,可以用于开发各种类型的应用程序。 一、应用领域不同 Java是一种面向对象的通用编…

    2023年5月24日
    2.4K00
  • 个人oa系统

    标题:个人OA系统的设计与实现 个人组织与协作应用(OA系统)为提升效率与优化工作流程提供必要工具。1、集成邮件和日程管理确保用户保持组织和事务同步;2、任务和项目管理模块助力多项目执行和监控;3、文档管理系统实现资料集中存储与检索;4、移动设备适配保证随时随地的访问便捷性;5、安全和隐私保护措施为…

    2024年1月12日
    24900
  • 学少儿编程是什么

    学少儿编程是什么 学少儿编程是让儿童掌握计算机编程的基本技能、思维方式和解决问题的方法。具体而言,这其中包括:1、学习编程语言的基础语法和结构;2、培养逻辑思维和算法设计能力;3、激发创新意识与实践技能;4、提高自我学习和解决实际问题的能力。专注于这一点——培养逻辑思维和算法设计能力,意味着通过编程…

    2024年4月25日
    1000
  • scratch编程是什么

    摘要 Scratch编程是一种面向初学者的编程语言,旨在通过拖拽编程块的方式来创建项目,以此1、培养计算思维,2、提高问题解决能力,3、激发对编程的兴趣。特别是在培养计算思维方面,Scratch通过可视化的编程环境,让使用者在构建故事、游戏或动画的过程中,自然而然地学习算法和循环等编程概念,这不仅有…

    2024年4月25日
    700
  • vb中byval和byref的区别

    区别有:1、意思上的区别;2、赋值的区别;3、用法的区别。按地址传递(ByRef)是指主程序直接将数据交给子过程(过程中定义传递方式),主程序输出的是修改后的值。按值传递(Byval),是指将主程序的值(副本一份)给子过程,主程序输出的仍是原值。 1、意思上的区别 按地址传递(ByRef),是指主程…

    2023年2月16日
    1.1K00
  • devops为什么落地不易

    开门见山地讲,DevOps落地不易源于多方面因素:1、企业文化与流程惯性的阻碍、2、技术难度与工具选择的复杂性、3、协作与沟通机制的不健全、4、人才结构和技能不匹配、5、组织架构不支持跨部门协作、6、缺乏成功实施案例的指引。这些因素错综复杂,互相交织,每个因素都需要深入分析与妥善解决。以企业文化与流…

    2024年3月26日
    10100
  • 上位机编程软件有哪些

    上位机编程软件有:1、InTouch;2、iFix;3、Citech;4、WinCC;5、组态王;6、Controx(开物);7、ForceControl(力控)。InTouch软件是较早进入我国的组态软件,基于Windows3.1的InTouch软件曾让我们耳目一新,并且InTouch提供了丰富的…

    2023年1月10日
    6.9K00
  • 工作进度计划表用什么软件

    工作进度计划表用的软件有:1、Microsoft Project;2、Trello;3、Asana;4、Smartsheet。Microsoft Project 能够帮助我们制定工作进度计划表、分配任务、进行资源分配和预算管理等。 一、功能需求 在选择工作进度计划表的软件时,首先需要考虑的是它是否具…

    2023年3月3日
    67300
  • 志愿者管理者如何发布项目

    志愿者管理者发布项目的关键步骤包括:明确项目目标、设计详细的项目计划、创建项目任务、选择合适的招募渠道、制定有效的沟通策略、确保项目资源支持、进行风险评估,以及设定评估和反馈机制。明确项目目标是这一过程中最为重要的步骤,它关系到项目是否能够成功吸引志愿者并达成预期效果。目标应具体、明确,且与志愿者组…

    2024年4月11日
    5600

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部