В чем разница между шифрованием SHA и AES?
Ответы:
SHA - это не шифрование, это односторонняя хеш-функция. AES (Advanced_Encryption_Standard) - это стандарт симметричного шифрования.
SHA - это семейство «алгоритмов безопасного хеширования », разработанных Агентством национальной безопасности. В настоящее время существует конкуренция среди десятков вариантов, кто станет SHA-3 , новым алгоритмом хеширования для 2012+.
Вы используете функции SHA, чтобы взять большой документ и вычислить «дайджест» (также называемый «хеш») входных данных. Важно понимать, что это односторонний процесс. Вы не можете взять дайджест и восстановить исходный документ.
AES , Advanced Encryption Standard, представляет собой симметричный блочный алгоритм. Это означает, что он берет блоки по 16 байтов и шифрует их. Он «симметричный», потому что ключ допускает как шифрование, так и дешифрование.
ОБНОВЛЕНИЕ: 2 октября 2012 г. Keccak был назван победителем SHA-3.
SHA и AES служат разным целям. SHA используется для генерации хэша данных, а AES используется для шифрования данных.
Вот пример того, когда вам может быть полезен хеш SHA. Допустим, вы хотите загрузить ISO-образ DVD какого-нибудь дистрибутива Linux. Это большой файл, и иногда что-то идет не так, поэтому вы хотите убедиться, что то, что вы скачали, является правильным. Вам нужно перейти к надежному источнику (например, к официальной точке загрузки дистрибутива), и у них обычно есть хэш SHA для ISO-образа. Теперь вы можете сгенерировать сопоставимый хэш 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 требует как минимум трех вещей - что вы шифруете / дешифруете, ключ шифрования и вектор инициализации.