SHA加密和AES加密有什么区别?

113
SHA和AES加密有什么区别?

2
更适合于http://security.stackexchange.com/。 - Dave Jarvis
6个回答

149

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

AES参考


99
每个SHA算法家族都是单向哈希特征和/或函数,而AES旨在允许加密和解密。

SHA是由美国国家安全局开发的“安全散列算法”家族。目前有数十个选项正在竞争成为SHA-3,即2012年以后的新哈希算法。

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

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

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


82

SHA和AES有不同的用途。SHA用于生成数据哈希,而AES用于加密数据。

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

正如您在本例中所看到的那样,SHA哈希用于验证未损坏的数据。您有权查看ISO中的数据。

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

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

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

如果您想了解更多关于它们的信息,可以尝试以下维基百科搜索术语(除了AES和SHA):

对称密钥算法(用于AES) 密码哈希函数(用于SHA) 公钥密码学(用于PGP和SSL)


10

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


8

SHA代表安全哈希算法,而AES代表先进加密标准。因此,SHA是一组哈希算法。另一方面,AES是用于加密的密码。SHA算法(如SHA-1,SHA-256等)将接受输入并生成摘要(哈希),这通常用于数字签名过程(对一些字节产生哈希并使用私钥签名)。


3

SHA不需要除了输入之外的任何东西,而AES至少需要三个要素——你要加密/解密的内容、一个加密密钥和初始化向量。


2
这似乎没有在其他回答中提供的任何信息。这被标记为“新用户对旧问题的延迟回答”。我的评论是在这种情况下发表的。 - danfuzz
1
这是错误的。使用AES不需要初始化向量(IV)。AES的某些操作模式需要IV(这是完全不同的)。 - Hilder Vitor Lima Pereira

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接