SHA和AES加密有什么区别?

时间:2009-06-13 13:47:44

标签: encryption aes

SHA和AES加密有什么区别?

6 个答案:

答案 0 :(得分:95)

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

AES Reference

答案 1 :(得分:73)

SHA是由国家安全局开发的“安全哈希算法”系列。目前有数十种选项可以竞争谁将成为SHA-3,即2012年的新哈希算法。

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

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

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

答案 2 :(得分:53)

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)

答案 3 :(得分:5)

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

答案 4 :(得分:5)

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

答案 5 :(得分:2)

SHA不需要任何东西,只需要应用输入,而AES至少需要3件事 - 您正在加密/解密,加密密钥和初始化向量。