什么是哈希?
散列是一个使用散列函数将数据转换为随机固定长度值的过程。 为了 example,一段纯文本(密码,用于 example) 可以转换为哈希值,因此很难破译。
散列是一种单向过程,不能直接反转(与加密相反,如果您拥有适当的解密密钥,则可以解密)。 当公司存储用户数据(比如说用户名和密码)时,他们可以使用散列来确保信息保持私密,即使他们遭受数据泄露。
此外,散列确保数据的完整性。 当您将散列文件发送给朋友时,您会在消息中提供散列值。 然后一个朋友计算哈希值——如果值匹配,那么文件在传输过程中没有被篡改。
散列通常用于处理大量数据。 很容易找到散列数据,也可以避免数据重复。 散列是一种快速、有效的方法,可以保证大量数据的安全并确保其完整性。
哈希是怎样工作的?
算法生成散列值,也称为散列函数。 散列算法为不同的键提供不同的散列值。 所以一个唯一的输入字符串应该有一个唯一的哈希值。
但是,在极少数情况下,键使用相同的哈希值。 这可能导致所谓的哈希冲突。
任何散列算法的一个定义特征是其散列函数的抗冲突性。 碰撞是不良行为者可能利用的哈希函数漏洞,因此好的哈希算法应该足够复杂以避免碰撞。
什么是加密?
加密是使用算法对数据进行编码的过程。 加密协议对数据进行加扰,因此除了预期的接收者之外的任何人都无法破译它,因为接收者拥有必要的密钥来逆转解密过程。 与散列不同,加密是一个双向过程——信息被加密,然后在到达预期接收者时被解密。
加密还可以保护敏感数据以及一般在线流量。 它应该使您的互联网流量无法被拦截器破解——如果没有必要的密钥,智能加密算法几乎是不可能破解的。
散列与加密
那么散列和加密有什么区别呢? 虽然散列和加密都可以保护您的数据免受外部恶意干预,但它们之间也存在显着差异:
- 散列是单向的,而加密是双向的。 加密将纯文本转换为密文,密文不可读,但您可以使用相关密钥对其进行解密。 散列将纯文本打乱为唯一的编码散列单元,该单元无法恢复为可读形式。
- 散列通常用于确保数据的完整性,主要是当我们存储大量数据时,而加密更多地旨在保护传输过程中少量数据的隐私;
最常见的哈希算法
与加密类似,散列可以有各种强度不同的算法:
- MD5。 MD5 是对 MD4 协议的改进,该协议存在重大安全漏洞。 虽然它仍在使用,但由于其设计缺陷,其他散列函数通常更可取。 此外,它的 128 位强度不足以进行适当的保护。 它对冲突的抵抗力也不是很强,因此在需要加密哈希时不适合。
- 沙。 SHA 是美国国家安全局在 1993 年开发的。它的原始版本有很多缺陷,所以 SHA 已经更新了几次。 它后来的迭代现在被广泛用于加密目的。 由于其敏感的哈希字符串,它被认为是一个相当安全的协议。
- 布莱克3。 BLAKE3 是 BLAKE 哈希函数的最新版本。 总体而言,它的性能比 SHA 和 BLAKE2 协议要好得多。 BLAKE3 用于 Wireguard,一种超快的 VPN 协议。
哈希使用示例
以下是哈希使用的一些示例:
- 在文件共享、下载或镜像过程中保持文件完整性。 它确保您获得的文件是完整的并且没有被篡改。
- 数字签名几乎总是需要计算加密哈希。 它保证了数字签名方案的效率和安全性。
- 密码验证通常使用加密哈希。 哈希摘要可防止密码被泄露。 在用户认证过程中,系统会将用户输入密码的哈希值与自己存储的值进行比较。
- 散列用于加密货币系统以保护它们免受 DDoS 攻击和其他滥用。
- 我们还可以使用散列来进行文件识别。 这可以保护用户免受伪造和当他们可以收到超出预期的其他数据的情况。
加密使用示例
以下是一些常见的加密用例:
- 加密用于保护您的在线流量免受干预和窥探。 它是 VPN 服务和一般在线安全的基本功能之一。
- 端到端加密用于即时消息服务,以保护您的对话隐私。
- 文件加密保护您的文件,即使他们截获传输中的文件,也没有人可以访问它们。
- 加密保护您免受网络犯罪分子的侵害。 为了 example,它在经常受到黑客欢迎的公共 Wi-Fi 网络上非常有用。