Разработка программного обеспечения | Мысли о проблеме значения 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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose