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)
SHA是一种哈希函数,而AES是一种加密标准。给定一个输入,您可以使用SHA生成一个输出,这个输出非常不可能从任何其他输入中产生。此外,在应用该函数时会丢失一些信息,因此即使您知道如何生成产生相同输出的输入,那个输入也不太可能与最初使用的输入相同。 另一方面,AES旨在保护在共享相同加密密钥的两个方之间发送的任何数据免于向第三方泄露。这意味着一旦您知道加密密钥和输出(以及IV...),您就可以无缝地返回到原始输入。 请注意,SHA只需要一个输入就可以应用,而AES至少需要三个东西:您要加密/解密的内容、加密密钥和初始化向量(IV)。
SHA代表安全哈希算法,而AES代表先进加密标准。因此,SHA是一组哈希算法。另一方面,AES是用于加密的密码。SHA算法(如SHA-1,SHA-256等)将接受输入并生成摘要(哈希),这通常用于数字签名过程(对一些字节产生哈希并使用私钥签名)。
SHA不需要除了输入之外的任何东西,而AES至少需要三个要素——你要加密/解密的内容、一个加密密钥和初始化向量。