首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >哈希算法和加密算法之间的区别?

哈希算法和加密算法之间的区别?
EN

Cryptography用户
提问于 2018-09-04 09:39:23
回答 2查看 1.3K关注 0票数 2

哈希算法和加密算法之间有很多混淆;我想了解:

  1. 我们何时使用哈希算法,何时使用加密算法(密码)?
  2. 逆转哈希算法和加密算法有多困难?
  3. 从理论/数学的角度来看,哈希算法和加密算法有什么区别?
EN

回答 2

Cryptography用户

回答已采纳

发布于 2018-09-04 19:56:27

我们何时使用哈希算法,何时使用加密算法(密码)?

哈希函数通常用于将任意长度(通常是长)输入映射到固定长度(通常是短)和随机值中。例如,SHA-256总是输出任何给定输入的256位随机字符串(或摘要).

哈希函数的一个非常常见的特性是抗冲突性,即很难找到产生相同输出的两个输入。当输入大小很长时,这是非常有用的,这意味着我们可以将一个大文件/字符串压缩成一个小文件/字符串,同时保持它的“唯一性”。(当然,从理论上讲,由于鸽子孔原理,有许多长输入会产生相同的短输出,但在给定合理的计算资源时,很难找到它们。)基于这一特性,哈希函数有许多很好的应用。例如,人们可以使用大文件的哈希值来高效地查找副本,一些网站经常发布可下载的应用程序安装包的哈希值,以确保完整性。然而,散列函数本身并不直接涉及数据隐私或机密性。

哈希函数(预期)具有的另一个属性是,它们输出看起来随机的值。这可以用于生成给定非随机(但高熵)输入的随机密钥,即所谓的密钥派生函数。

加密算法(更准确地说,是加密方案)被设计成用输出/密文“隐藏”输入/明文,这样除了拥有秘密密钥的人之外,没有人可以解密密文以获得原始明文。它们至少提供了数据机密性,并且经过验证的加密方案也提供了完整性(这里可以使用散列函数)。

逆转哈希算法和加密算法有多困难?

哈希函数的设计是很难逆转的,加密算法不知道秘密密钥也是如此。但是,如果您知道密钥,或者您想要使用任何密钥的加密算法,那么您可以轻松地使用使用相同密钥的解密算法来逆转它。因此,这里的简单区别是哈希函数没有键。(请注意,键控哈希函数经常在消息身份验证代码的主题中讨论。)

从理论/数学的角度来看,哈希算法和加密算法有什么区别?

哈希函数通常将长输入映射为短输入,而加密算法通常会相反地引入随机性(隐藏输入消息)。哈希函数是确定性的,而加密算法通常是概率的(否则加密方案不能是IND安全的)。嗯,关于相似之处,它们都会产生随机的输出。

票数 2
EN

Cryptography用户

发布于 2018-09-04 10:04:21

我们什么时候使用哈希算法,什么时候使用密码?

(密码)散列函数允许您轻松地验证某些输入数据映射到给定的哈希值。散列还用于验证文件从一个地方传输到另一个地方后的完整性,通常是在像SyncBack这样的文件备份程序中。为了确保传输的文件不损坏,用户可以比较这两个文件的哈希值。如果它们是相同的,那么传输的文件就是一个相同的副本。

散列在密钥推导函数 (KDF)中也起着重要作用。

另一方面,加密是对消息或信息进行编码的过程,其方式是只有授权方才能访问消息或信息,而那些未经授权的人不能访问它。

反向哈希和加密函数有多难?

加密很容易逆转(这就是目的),但在某些情况下,它们的难度各不相同。如果被授权方拥有钥匙,那么其中一些条件包括:

  • 对称还是不对称加密?
    • 对称加密通常比非对称加密更容易逆转。

  • 加密的“安全度”
    • 例如,AES-128比AES-256更容易逆转.

如果密钥未知,则很难、几乎不可能逆转消息的加密(在此上下文中:反向=查找密钥)。

好的散列函数是单向函数,所以很难逆转散列.在今天的使用中,几乎没有任何哈希函数被证明是不可逆转的。有关可证明的安全哈希函数的更详细信息可以在此维基百科中找到。

从理论/数学的角度来看,哈希算法和加密算法有什么区别?

大多数哈希函数接受任意长度的消息,并返回一个固定长度的哈希值。一个完美的哈希函数将被设计成不可逆转。这意味着您不能反向函数来接收来自哈希的输入。

但是,只要知道密钥,加密算法就可以逆转。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/62036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档