我不太懂散列,不管是加密还是其他。
因此,如果您有一个网站,并有用户注册,您可以将他的密码存储为散列。当他们登录时,您的网站接受提交的密码,对其进行散列,并将散列提交与存储的哈希进行比较,对吗?
假设您正在使用SHA-256对一个句子进行散列,您是否曾经解密过这样的散列,或者甚至有能力解密?
最后一个跟进: Whatsapp说我的消息是加密的。所以,如果我在发送它们时加密它们,其他人是如何解密它们的?
我意识到这是一个非常普遍的问题,但我正试图思考这是如何运作的。请不要大喊。
发布于 2022-02-10 07:15:18
因此,如果您有一个网站,并有用户注册,您可以将他的密码存储为散列。当他们登录时,您的网站接受提交的密码,对其进行散列,并将散列提交与存储的哈希进行比较,对吗?
是的,在标准的现代方法中有三个额外的细节:
假设您正在使用SHA-256对一个句子进行散列,您是否曾经解密过这样的散列,或者甚至有能力解密?
不是的。首先,在给定哈希函数的输出时,“解密”不是查找哈希函数输入的正确术语;正确的术语是“反向”。并且,哈希被设计成在正常操作中是不可逆转的。如果哈希的输入是未知的,并在一个大集合中随机选择,且哈希设计良好,则实际上不可能逆转该哈希。
Whatsapp说我的信息是加密的。所以,如果我在发送它们时加密它们,其他人是如何解密它们的?
散列与加密不是一回事。散列以一种设计为不可逆转、不使用密钥的方式转换消息。加密根据加密密钥转换消息,以具有解密密钥的方式可逆。
解密密钥必须是秘密的,否则加密的目标(向不知道解密密钥的对手隐藏加密的内容)无法实现。在对称加密(如AES-GCM)中,加密和解密密钥是相同的。在非对称加密(例如RSA、ECIES)中,它们是不同的:加密密钥可以公开,被称为公钥;解密密钥是私钥。
当您使用使用非对称加密(如Whatsapp)的现代应用程序发送消息时,下面是一个大图:
保护消息机密性的主要机制是对称加密。非对称加密保护消息-唯一密钥的机密性,从而间接保护消息的机密性。在某些步骤中,哈希通常作为构建块在内部使用,但不是加密消息或消息唯一密钥的机制。
发布于 2022-02-10 10:47:36
除了@frieu的回答:
假设您正在使用SHA-256对一个句子进行散列,您是否曾经解密过这样的散列,或者甚至有能力解密?
要验证密码,您不必从哈希还原密码。您只需计算要检查的密码的哈希。如果密码相同,您将得到相同的散列。
重要的是要知道,可以有多个密码产生相同的哈希。但是对于SHA-256或Argon2这样的算法,有两个重要方面:
https://crypto.stackexchange.com/questions/98610
复制相似问题