105

SHA 和 AES 加密有什么区别?

4

6 回答 6

139

SHA 不是加密,它是一种单向哈希函数。AES (Advanced_Encryption_Standard) 是一种对称加密标准。

AES 参考

于 2009-06-13T13:53:31.703 回答
93

SHA是由美国国家安全局开发的一系列“安全哈希算法”。目前,数十个选项之间存在竞争,谁将成为SHA-3,这是 2012+ 的新哈希算法。

您使用 SHA 函数获取大型文档并计算输入的“摘要”(也称为“散列”)。重要的是要认识到这是一个单向过程。您无法获取摘要并恢复原始文档。

AES,高级加密标准是一种对称块算法。这意味着它需要 16 个字节的块并对其进行加密。它是“对称的”,因为密钥允许加密和解密。

更新: Keccak于 2012 年 10 月 2 日被评为 SHA-3 获胜者。

于 2009-06-13T13:59:54.590 回答
76

SHA 和 AES 有不同的用途。SHA 用于生成数据散列,AES 用于加密数据。

下面是一个 SHA 哈希对您有用的示例。假设您想下载某个 Linux 发行版的 DVD ISO 映像。这是一个大文件,有时会出错 - 所以您想验证您下载的内容是否正确。您要做的是转到受信任的来源(例如官方发行版下载点),它们通常具有可用的 ISO 映像的 SHA 哈希。您现在可以为下载的数据生成可比较的 SHA 哈希(使用任意数量的开放工具)。您现在可以比较两个哈希值以确保它们匹配 - 这将验证您下载的图像是否正确。如果您从不受信任的来源(例如 torrent)获取 ISO 映像,或者您在使用 ISO 时遇到问题并想检查映像是否损坏,这一点尤其重要。

正如您在这种情况下所看到的,SHA 用于验证未损坏的数据。您有权查看 ISO 中的数据。

另一方面,AES 用于加密数据,或防止人们在知道某些秘密的情况下查看该数据。

AES 使用共享密钥,这意味着用于加密数据的密钥(或相关密钥)与用于解密数据的密钥相同。例如,如果我使用 AES 加密了一封电子邮件并将该电子邮件发送给您,那么您和我都需要知道用于加密和解密电子邮件的共享密钥。这与使用 PGP 或 SSL 等公钥的算法不同。

如果您想将它们放在一起,您可以使用 AES 加密消息,然后发送未加密消息的 SHA1 哈希,以便在解密消息时他们能够验证数据。这是一个有点做作的例子。

如果您想了解更多关于这些维基百科搜索词(除了 AES 和 SHA),您想尝试包括:

对称密钥算法(用于 AES) 加密散列函数(用于 SHA) 公钥加密(用于 PGP 和 SSL)

于 2009-06-13T14:26:25.167 回答
10

SHA 是哈希函数,AES 是加密标准。给定一个输入,您可以使用 SHA 生成一个输出,该输出不太可能从任何其他输入生成。此外,在应用该函数时会丢失一些信息,因此即使您知道如何生成产生相同输出的输入,该输入也不太可能与最初使用的输入相同。另一方面,AES 旨在保护在共享相同加密密钥的两方之间发送的任何数据不泄露给第三方。这意味着一旦您知道加密密钥和输出(以及 IV...),您就可以无缝地返回原始输入。请注意,SHA 不需要任何东西,只需要应用输入,而 AES 至少需要 3 项:您要加密/解密的内容、加密密钥和初始化向量 (IV)。

于 2009-06-13T14:04:13.893 回答
8

SHA 代表安全散列算法,而 AES 代表高级加密标准。所以 SHA 是一套散列算法。另一方面,AES是一种用于加密的密码。SHA 算法(SHA-1、SHA-256 等)将接受输入并产生摘要(哈希),这通常用于数字签名过程(产生一些字节的哈希并使用私钥签名) .

于 2009-06-13T13:59:24.233 回答
3

SHA 不需要任何东西,只需要应用输入,而 AES 至少需要 3 样东西——你要加密/解密的东西、加密密钥和初始化向量。

于 2011-11-14T09:30:35.213 回答