Разработка программного обеспечения | Мысли о проблеме значения MD5 на официальном сайте
Разработка программного обеспечения | Мысли о проблеме значения MD5 на официальном сайте

введение

Загрузите пакеты, представленные на GitHub и некоторых официальных сайтах.,Значение MD5 файла обычно не генерируется непосредственно платформой GitHub.,тогда как да генерируется локально владельцем или загрузчиком файла,Затем загрузите на GitHub в рамках проверки честности файла. Значение MD5 или хэш-значение,используется дляПроверьте уникальность файлаичестность。Обычно мы увидим их на некоторых официальных сайтах.MD5ценить,Даже некоторые подписи, названные другими алгоритмами 📄,Например, значение подписи GnuPG (или файла и т. д.).

Документальный фильмуникальностьичестностьда Убедитесь, что файл находится в хранилище、Сохраняйте исходное состояние неизмененным во время передачи и использования.、разрушать.

Проверьте уникальность файла

Сравнение имен файлов

Самый простой и распространенный способ — напрямую сравнить имена файлов. Однако этот метод ненадежен, поскольку имя файла можно легко изменить, а разные файлы могут иметь одно и то же имя.

Хэш содержимого файла

通过计算文件内容的哈希ценить(нравитьсяMD5SHA-1SHA-256ждать),Можно получить уникальный идентификатор фиксированной длины. Если два файла имеют одинаковое значение хеш-функции,Тогда их содержание почти наверняка одинаковое.

Этот метод лучше, чем Сравнение имен файлы надежнее,Поскольку хэш-значение да генерируется на основе содержимого файла,И практически невозможно, чтобы разное содержимое файла давало одно и то же значение хеш-функции (хотя существует вероятность коллизии хеш-функций).,Но вероятность крайне мала).

例нравиться从Nacosофициальный сайт(https://nacos.io/en/download/nacos-server/#stable-versions)При загрузке установочного пакета вы можете следоватьMD5ценить比较确认Документальный фильмчестность。

подпись файла

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

例нравитьсясуществоватьMySQLофициальный сайт(https://dev.mysql.com/downloads/mysql/)Мы видим, что существует два видаподпись файла Способ:Хэш-подписьиПодпись GnuPG,kafkaиспользовалascsha512подпись алгоритма。

Проверьте целостность файла

Сравнение хеш-значений

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

Контрольная сумма

Контрольная размерда Уникальный идентификатор, создаваемый на основе содержимого файла и используемый для проверки. целостность файла。общий Контрольная пакеты алгоритмов включают CRC32 и так далее. Путем расчета Контрольная файла завершения, и с заранее рассчитанной Контрольной сколько можно сравнить, могу проверить целостность файла。

Сравнение размеров файлов

Сравнивая размер файла, можно изначально определить, изменился ли файл. Если размер файла не соответствует ранее записанному значению, это может указывать на то, что файл был подделан или поврежден. Однако этот метод ненадежен, поскольку размер файла можно легко изменить.

Сравнение дат файлов

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

Проверка прав доступа к файлу

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

Проверка метаданных

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

Как сгенерировать значение MD5

В разработке,Для генерации значений MD5 можно использовать различные инструменты и средства программирования. Например,На Python,Можно использоватьхэшлиб-библиотека;на Яве,Можно использоватьMessageDigestдобрый;существоватьC++середина,Можно написать собственную реализацию алгоритма MD5 или использовать существующую библиотеку.

язык Python

hashlib да Python Встроенная библиотека для предоставления общих алгоритмов дайджеста сообщений, также известных как алгоритмы хеширования. Эффект также может быть достигнут с использованием других сторонних библиотек.

Язык кода:javascript
копировать
>>> import hashlib
>>>
>>> md5_hash = hashlib.md5()
>>> md5_hash.update(b'Hello, world!')
>>> md5_result = md5_hash.hexdigest()
>>> print(f'MD5: {md5_result}')
MD5: 6cd3556deb0da54bca060b4c39479839
>>>
>>>

язык Java

на Яве,Часть класса MessageDigest пакета даjava.security,Обеспечивает функциональность алгоритмов обобщения информации.,Включая МД5. Информационный дайджестда Односторонняя хэш-функция,Он принимает ввод данных любого размера,и выводит хэш-значение фиксированного размера (дайджест). Алгоритм MD5 да одна из этих хэш-функций,Он создает 128-битное (16 байт) хеш-значение.,Обычно представляется как 32-битное шестнадцатеричное число.

Язык кода:javascript
копировать
package com.aion.tooljdk;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * <p> JdkMessageDigestTest </p>
 * class
 *
 * @author Aion
 * @version v1.0.0
 * @description TODO
 * @since 2024/10/17 20:55
 */
public class JdkMessageDigestTest {
    public static void main(String[] args) {
        try {
            // Получите экземпляр MessageDigest алгоритма MD5.
            MessageDigest md = MessageDigest.getInstance("MD5");

            // Обновить данные (требуется преобразование строки в массив байтов)
            md.update("Hello, world!".getBytes());
            // Вычислить хеш-значение (возвращает массив байтов)
            byte[] digest = md.digest();

            // Преобразовать массив байтов в шестнадцатеричную строку
            BigInteger number = new BigInteger(1, digest);
            StringBuilder hexString = new StringBuilder(number.toString(16));

            // Если длина хэш-значения не составляет 32 бита, то впереди добавляется 0.
            while (hexString.length() < 32) {
                hexString.insert(0, '0');
            }

            // Возвращает шестнадцатеричное строковое представление хеш-значения.
            System.out.println(hexString);
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }
}

язык оболочки

На языке Shell удобнее использовать команды MD5 для генерации значений MD5 для строк и файлов.

Язык кода:javascript
копировать
Aion logs $ md5 -s 'Hello, world!'
MD5 ("Hello, world!") = 6cd3556deb0da54bca060b4c39479839
Aion logs $

язык SQL

В SQL,Функция MD5 очень проста,Принимает строку непосредственно в качестве ввода,и возвращает его хеш-значение MD5. Ниже показано использование функции MD5 в MySQL и PostgreSQL.

Язык кода:javascript
копировать
select md5('Hello, world!'), version();

Другие языки подробно рассматриваться не будут.

Как проверить значения файлов

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

Послесловие

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

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода