Разница между дайджестом и шифрованием (в качестве примера возьмем алгоритм MD5)

Java
Разница между дайджестом и шифрованием (в качестве примера возьмем алгоритм MD5)

(1) Цель реферата

Например, некоторые веб-сайты, обеспечивающие загрузку, предоставляют на странице соответствующее значение MD5 в дополнение к адресу загрузки сжатого пакета. После загрузки сжатого пакета мы можем просмотреть значение MD5 сжатого пакета. Сравните значение MD5 загруженного сжатого пакета со значением MD5, предоставленным веб-сайтом.Если два значения MD5 несовместимы, это означает, что сжатый пакет не является официально предоставленным сжатым пакетом и может быть заменен другими файлами или модифицированный. Например, событие XCodeGhost инструментов разработки Apple.

Алгоритм MD5 является распространенным алгоритмом дайджеста. Алгоритм может генерировать 128-битную двоичную строку сжатого пакета. Помимо сжатых пакетов, его также можно применять к другим файлам и строкам. Например, пароль учетной записи не будет храниться непосредственно в базе данных, например, я привык склеивать пароль в неправильную строку, а затем вычислять сводку MD5 и заносить ее в базу данных (причина будет объяснена ниже). MD5 часто используется в сочетании с BASE64.

(2) Дайджест и шифрование — это две концепции

1. Аннотация

  • Дайджест — это хеш-значение, и мы можем получить это хеш-значение с помощью хэш-алгоритма, такого как алгоритм MD5.
  • Дайджест — это просто хеш-значение, используемое для проверки целостности и уникальности данных.Независимо от исходных данных, результирующее хеш-значение имеет фиксированную длину.
  • Независимо от того, каковы исходные данные, полученное хеш-значение имеет фиксированную длину, то есть дайджест представляет собой не зашифрованный зашифрованный текст исходных данных, а токен для проверки подлинности. Таким образом, мы не можем получить исходные данные путем расшифровки дайджеста.

2. Шифрование

Шифрование заключается в шифровании «открытого текста» в «зашифрованный текст» с помощью «алгоритма шифрования». Мы можем восстановить «зашифрованный текст» в «открытый текст» с помощью «ключа» и «алгоритма дешифрования».

3. Непонимание аннотации

Неправильное понимание:

  • Дайджест информации получается с помощью алгоритма шифрования.
  • Исходные данные можно получить путем расшифровки зашифрованного результата дайджеста сообщения.

Исправление ошибки:

  • Алгоритм получения дайджеста представляет собой алгоритм хэширования, так называемого "шифрования" и "дешифрования" здесь нет, эти утверждения не являются строгими, хотя и описаны во многих книгах.
  • Дайджест — это всего лишь токен для подтверждения личности, мы не можем восстановить исходные данные через дайджест.

(3) Алгоритм MD5 не является алгоритмом шифрования

1. Введение в алгоритм MD5

MD5 — это алгоритм хэширования, используемый для вычисления дайджестов, а результатом вычисления является двоичная строка с фиксированной длиной 128 бит. Не алгоритм шифрования.

2. Разве алгоритм MD5 обычно не используется для шифрования паролей учетных записей?

Это понимание не является строгим, потому что мы также используем MD5 для вычисления сводки пароля учетной записи, и исходный пароль учетной записи не может быть восстановлен с помощью этой сводки. Поскольку дайджест — это только токен для аутентификации, исходные данные нельзя восстановить с помощью токена.

3. Алгоритм MD5 необратим, а как насчет онлайн-шифрования и дешифрования MD5 в Интернете?

Алгоритм MD5 необратим, и мы не можем восстановить результат до обработки алгоритмом MD5 из алгоритма. Поскольку MD5 является алгоритмом дайджеста сообщения, исходные данные не могут быть получены с помощью дайджеста, поэтому само утверждение о расшифровке неверно.

4, объяснение каштана

Хотя алгоритм MD5 необратим и не может восстановить исходные данные через дайджест, это не означает, что безопасность безупречна.

Поскольку дайджест строки, вычисленный MD5, уникален, словарь MD5 со временем накапливает все больше и больше записей MD5, и вы можете легко найти свой пароль, исчерпав этот словарь.

Например, следующий веб-сайт сохраняет много записей MD5, то есть на этом веб-сайте есть словарь MD5, и мы вводим реферат 123 с помощью алгоритма MD5. Исчерпав этот словарь, сразу обнаруживается, что информация, соответствующая этому дайджесту, равна 123.

image.png

Вышеупомянутое не позволяет получить исходную информацию путем взлома алгоритма MD5 или восстановления дайджеста информации. Вместо этого через исчерпывающий словарь MD5 словарь хранит аналогичные(摘要) 202CB962AC59075B964B07152D234B70:(信息)123При такой записи мы знаем, что информация, соответствующая сводке, равна 123.

5. Предотвращение исчерпания словаря MD5: увеличьте длину информации, чтобы повысить сложность исчерпания словаря.

1) Анализ

Метод исчерпывающего словаря требует, чтобы словарь сохранял информацию алгоритма MD5 и вычисляемый дайджест.Словарь ограничен, поэтому невозможно сохранить всю информацию, поэтому обычно сохраняются только короткие данные и соответствующий дайджест информации. . В обычных условиях длина пароля не очень велика, поэтому информацию, соответствующую дайджесту пароля, можно найти в исчерпывающем словаре.

Делая шаг назад, даже если словарь MD5 сохраняет большое количество информации и соответствующую информационную сводку, это означает, что этот словарь сохраняет много записей.Даже если он исчерпывающий, для исчерпания записи потребуется очень много времени. . . .

Поэтому мы можем увеличить длину информации, так что возможность информационно-сводной записи информации в словарь MD5 будет очень низкой, а даже если она и будет, то на ее исчерпывающую обработку уйдет много времени.

2) Идеи реализации

При написании приложений Rails в прошлом информация сначала кодировалась в BASE64, и результатом была очень длинная строка.

При написании SSM-приложений сейчас я использую не схему кодирования BASE64, а «пароль + произвольная строка» и далее использую алгоритм MD5 для вычисления дайджеста. Например, пароль пароль, то я сделаю следующее:

1,result = MD5算法(password + "adfasdfsdafsadasou89ZXcj@#$aKJdjklj;easd../dSF.,";)
2,将result存入数据库