Худшая ночь поддержки моих лет WP Adminify началась с белого экрана.We'd проталкивал версию 3.1.2 на сервер обновлений около 23:00, а к 2:40 у меня было 14 билетов, в которых говорилось то же самое: обновление установлено, сайт мертв. я откатился назад, повторно протестировал zip на своей машине - работал идеально. та же версия. тот же файл. Якобы.
Мне потребовалось смущающе много времени, чтобы сделать очевидную вещь: хешировать оба файла. The ША-256 молнии на моем ноутбуке и SHA-256 зип сидя на сервере обновлений не 't совпадал. Даже близко - совсем другие дайджесты. загрузка была усечена где-то в середине передачи, сервер с радостью обслуживал сломанный архив, и PHP подавился неполными файлами внутри. Одно сравнение контрольной суммы поймало бы его до обновления одного пользователя. После той ночи каждый выпуск WP Adminify печатал свой SHA-256 в журнале развертывания, и сценарий загрузки отказывался публиковаться, если удаленный хэш не соответствовал локальному. С тех пор ноль поврежденных выпусков.
Это 's что такое хеширование, в самом практичном виде: отпечаток пальца для данных.Подавайте в файле или строке, верните короткий дайджест фиксированной длины. Если изменится хотя бы один байт - перевернутый бит, усеченная загрузка, хитрое редактирование - дайджест полностью меняется. Теперь я обращаюсь к генератору хешей онлайн несколько раз в неделю: проверка загрузок, отладка подписей веб-крючков, сравнение файлов конфигурации в разных средах, проверка работоспособности, что два "идентичные " файлы на самом деле есть.
Вот почему я построил один в Toolz.dev.Я хотел хеш-инструмент, который вычисляет все в браузере, показывает мне MD5, SHA-1, SHA-256 и SHA-512 рядом и никогда нигде не загружает байт моего ввода. Это руководство описывает, как его использовать, что и #39; на самом деле происходит под капотом, и единственная ошибка с хешированием, которую я совершил сам на раннем этапе - и которую я до сих пор вижу в кодовых базах.
TL;DR: использовать Генератор хэш-генератора Toolz.dev для вычисления дайджестов MD5, SHA-1, SHA-256 и SHA-512 из текста или файлов мгновенно и полностью в вашем браузере через веб-крипто-API. По умолчанию используется SHA-256 для всего, что имеет значение; рассматривайте MD5 и SHA-1 только как устаревшие контрольные суммы. И никогда - никогда - не используйте ничего из этого для паролей. That's bcrypt или Argon2 territory.
Основные характеристики
Несколько алгоритмов одновременно
Вставьте свой ввод один раз и получите MD5, SHA-1, SHA-256 и SHA-512 вычисляемые одновременно. Это звучит как небольшое удобство, пока вы 'отлаживаете кого-то другого's системы и вы не знаете, какой алгоритм они использовали. I' потеряли на этом реальное время - платежный шлюз's документы сказали "SHA hash" без прикрепленного номера, и я сидел там, генерируя дайджесты по одному алгоритму в терминале до тех пор, пока не будет сопоставлен один. Со всеми четырьмя дайджестами на экране одновременно вы просто смотрите, какой из них совпадает со значением, которое вы и#39; пытаетесь сопоставить. Это также делает различия интуитивными: вы можете увидеть 32-символьный MD5 рядом со 128-символьным SHA-512 и сразу понять, что такое " размер иquot; на практике означает.
Текст и хеширование файлов
Введите или вставьте строку или загляните в файл - инструмент обрабатывает оба. Хеширование текста охватывает повседневные случаи: отладка подписи API, ключи кэша, быстрые сравнения. Хеширование файлов - это то, где происходит реальная работа проверки. Проверка загруженного установщика на опубликованную контрольную сумму, подтверждение того, что зип плагина пережил поездку на ваш сервер обновлений, проверка дампа базы данных, скопированного между машинами в целости и сохранности. Файл никогда никуда не загружается; it' читается локально вашим браузером и хешируется на месте. I've хешировал многосотмегабайтный SQL-адрес таким образом. It' это быстрее, чем вы'd ожидайте, потому что тяжелый подъем происходит в собственном коде браузера, а не в циклах JavaScript.
Мгновенные вычисления на стороне клиента с помощью веб-крипто
Дайджесты семейства SHA вычисляются с помощью встроенного API Web Crypto браузера и #39;s - crypto.subtle.digest- который запускает собственный, оптимизированный криптографический код, поставляемый с вашим браузером. Нет сервера туда и обратно, нет очереди, нет спиннера. вы получаете результаты так быстро, как ваш автомат может читать вход. Это имеет значение по двум причинам. во-первых, скорость: хеширование происходит в миллисекундах, даже для больших входов. во-вторых, доверие: поскольку вычисления локальны, инструмент работает одинаково независимо от того, находитесь ли вы & #39; находитесь в сети кофе или хешируете конфиденциальную конфигурацию в заблокированной сети. страница загружается один раз; после этого сеть не имеет значения.
Выход в верхнем и нижнем регистре
Тривиальная особенность, спасает настоящие головные боли.Гекс-дайджесты нечувствительны к регистру по смыслу - 2CF24DBA а 2cf24dba кодировать идентичные байты - но сравнения строк don't знать, что. множество систем хранить или публиковать дайджесты в верхнем регистре (некоторые инструменты Windows, некоторые страницы контрольной суммы поставщика), в то время как большинство инструментов Unix излучают строчные. если вы' вставляете дайджест в сценарий сравнения или файл конфигурации, который делает точное сопоставление строк, случай внезапно имеет большое значение. Переключение означает, что вы копируете необходимый вам формат вместо запуска вывода через конвертер регистров или, что еще хуже, "фиксация " это вручную и жирной аппликатурой персонажа.
Сравнить и проверить режим
Хеширование - это только половина работы - обычно вы' проверяете дайджест на предмет ожидаемого значения. Вставьте опубликованную контрольную сумму рядом с вычисленной, и инструмент мгновенно сообщит вам, совпадают ли они, не требуется щуриться с 64 шестнадцатеричными символами. Раньше я проверял контрольные суммы, визуально сравнивая первый и последний несколько символов. That' именно так вы пропускаете несоответствие посередине. Человеческие глаза ужасны при сравнении длинных случайных строк; что' задание для проверки равенства. Режим проверки также нормализует регистр и обрезает пробелы перед сравнением, что убивает наиболее распространенный ложный сигнал тревоги: случайное конечное пространство из неряшливой копипасты.
100% приват - ничто не покидает ваш браузер
Это функция, на которой я отказываюсь идти на компромисс во всех Toolz.dev. Ваш ввод - текст или файл - хешируется локально и никогда не передается. There's нет обработки на стороне сервера, нет ведения журнала, нет & quot;мы анонимизируем ваши данные& quot; мелким шрифтом, потому что там's нет данных для регистрации.Это имеет большее значение для хеширования, чем люди понимают: вещи, которые хешируют разработчики, часто являются именно теми вещами, которые они должны 't вставить в случайный веб-сайт - API секреты при отладке HMAC подписи, лицензионные ключи, дампы с электронной почтой клиентов. с помощью инструмента на стороне клиента, который рискует испариться.Откройте свой браузер и #39;s вкладка сети во время хеширования, если вы хотите доказательства.Я написал больше о том, почему эта архитектура имеет значение в моем Конфиденциальность данных и онлайн-инстру почта
Как использовать хэш-генератор
Шаг 1: Откройте инструмент и выберите свой ввод
направляйтесь к хэш-генератор. Вы' увидите область ввода, которая принимает либо напечатанный/вставленный текст, либо файл. Для текста просто начните вводить - хеширование происходит по ходу. Для файлов перетащите один в зону высадки или воспользуйтесь устройством сбора файлов. Ничего не загружается; файл читается локально вашим браузером. There's нет потолка размера, превышающего ваш компьютер's память удобна.
Шаг 2: Прочитайте дайджесты
Все алгоритмы вычисляют сразу: MD5, SHA-1, SHA-256, SHA-512. Каждый дайджест появляется в своей помеченной строке, в шестнадцатеричном формате. Обратите внимание на длины - 32 символа для MD5, 40 для SHA-1, 64 для SHA-256, 128 для SHA-512. Если вы & #39; сопоставляете с известной контрольной суммой, и вы & #39; не уверены, какой алгоритм его создал, длина сама по себе обычно говорит вам, прежде чем сравнивать один символ.
Шаг 3: Переключите корпус, если необходимо
Если система you're сопоставление с использует заглавный гекс, переверните чехол, переключить. байты дайджеста идентичны в любом случае - это исключительно о форматировании строки. копировать дайджест кнопкой копирования, а не выбирать вручную; 128-символьный дайджест SHA-512 очень легко частично выбрать, и усеченный дайджест будет молча проваливаться при каждом сравнении с ним.
Шаг 4: Проверка на ожидаемый хэш
Получил опубликованную контрольную сумму от поставщика's страница загрузки или коллеги's развернуть журнал? Вставить ее в поле сравнения. инструмент проверяет ее по вашему вычисленному дайджесту и дает вам четкое совпадение или несоответствие. совпадение означает, что данные побайт идентичны тому, что произвело исходный хэш. Несоответствие означает что-то измененное - поврежденную передачу, неправильную версию файла или несанкционированное вмешательство. Don't рационализировать несоответствие. Повторная загрузка и проверка еще раз.
MD5 против SHA-256: что на самом деле происходит под капотом
Криптографическая хэш-функция принимает ввод любой длины и создает выход фиксированной длины, называемый дайджестом. Четыре свойства делают его полезным. детерминистический- один и тот же вход всегда дает один и тот же дайджест. Он демонстрирует эффект лавины- изменить один бит ввода и примерно половину выходных битов перевернуть. Это 'с односторонний- там & #39;s нет возможного пути от дайджеста обратно к входу. И это & #39;с устойчивый к столкновению- найти два разных входных данных, которые дают один и тот же дайджест, должно быть невозможно с вычислительной точки зрения.
Лавинный эффект стоит увидеть с реальными ценностями. MD5 hello есть 5d41402abc4b2a76b9719d911017c592. Напишите одну букву - Hello- и ты получаешь 8b1a9953c4611296a827abf8c47804d7, йо- Ни один символ не смещался, совершенно не связанный с ним дайджест. Та же история с SHA-256: hello хэши к 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824, пока Hello производит дайджест, который практически ничего не разделяет с ним. В этом и смысл. Дайджест говорит вам не Данные изменились, никогда сколько, йо-
Теперь алгоритмы. MD5 был определен в RFC 1321 еще в 1992 году и производит 128-битный дайджест. It's быстро, it's везде - и it's криптографически сломан. Практические коллизионные атаки существуют с 2004 года; исследователи могут изготовить два разных входных данных с одним и тем же дайджестом MD5 на товарном оборудовании. Это убивает его за все состязательное: подписи, сертификаты, проверки целостности, где злоумышленник может заменить контент. Это остается в порядке с несостязательными контрольными суммами - обнаружение случайного повреждения при передаче файлов, дедуплицирование ваших собственных данных - потому что случайное повреждение не приводит к 't может выбрать свои байты. ША-1 (160-бит) продлились дольше, но разбитая атака продемонстрировала практическое столкновение в 2017 году, в комплекте с двумя различными PDF-файлами, имеющими один дайджест SHA-1. Git по-прежнему использует SHA-1 внутренне по историческим причинам, но никакой новой системы не следует.
выше Семья Ша-2- SHA-256 и SHA-512 среди них - указаны в FIPS 180-4 и остаются неразбитыми. SHA-256 дает вам 256-битный дайджест и является разумным дефолтом почти для всего. SHA-512 предлагает больший дайджест и часто является более энергичный На 64-битных процессорах, так как он работает в 64-битных словах.
Три различия, которые люди постоянно стирают. хэширование это односторонний подход - ни ключа, ни пути назад. шифрование является двусторонним - любой, у кого есть ключ, может расшифровать. кодирующийкак и Base64, это защита от нулевого пути - it's просто изменение представления, которое может изменить каждый, ключ не требуется. Если вы' вы когда-либо видели Base64, рассматриваемый как "шифрование, " мой Конвертер Base64 С радостью продемонстрирую, почему это проблема, и мой Руководство по кодированию Base64 Покрывает различие в глубине.
Когда вам нужно доказать, что сообщение пришло от кого-то, у кого есть общий секрет - подписи веб-крючка, подписание запроса API - простой хэш 'достаточно, потому что хэш может сделать каждый. Это'с HMAC, определено в RFC 2104: конструкция с ключом, которая обертывает хэш-функцию, поэтому только ключевые держатели могут создавать допустимые дайджесты. HMAC-SHA256 — это рабочая лошадка, стоящая за большинством схем подписи веб-хука, которые вы когда-либо отлаживаете.
И большой: Никогда не хэшируйте пароли с быстрыми хэшами. Быстро здесь враг - злоумышленник с утечкой базы данных может тестировать миллиарды угадок MD5 или SHA-256 в секунду на графических процессорах Пароли нуждаются в намеренно медленных, соленых алгоритмах: bcrypt или Argon2. Laravel's Hash::make() использует bcrypt по умолчанию именно по этой причине, и WordPress потратил годы на схему портативного хеширования phpass, прежде чем модернизировать - несовершенно, но инстинкт (замедлить, посолить) был прав. Я узнал это на собственном горьком опыте: мой ранний внештатный проект, за несколько лет до WP Adminify, хранил пароли как необработанные md5($password), йо- Классический ход новичка. Никто не прорвался, но я все равно мораюсь.
Вот что делает инструмент Toolz.dev под капотом и что вы сами напишите:
const data = new TextEncoder().encode('hello');
const buf = await crypto.subtle.digest('SHA-256', data);
const hex = [...new Uint8Array(buf)]
.map(b => b.toString(16).padStart(2, '0'))
.join('');
// "2cf24dba5fb0a30e26e83b2ac5b9e29e..."
Или в PHP одна строка: hash('sha256', 'hello'), йо- Тот же вход, тот же дайджест, любой язык, любая машина. Этот детерминизм — это целая основа.
Общие варианты использования
Проверка загрузки файлов и выпуска артефактов
В примере использования, который сжег меня во вступлении. Поставщики публикуют контрольные суммы рядом с загрузками по причине: переносы повреждены, зеркала устарели, а иногда кто-то вредоносный файл меняет файл. Скачайте файл, хэшируйте его с хэш-генератор, сравнить с опубликованным значением. совпадение: файл байт-идентичен тому, что хэшировал издатель. Несоответствие: остановить и перезагрузить. для моих собственных выпусков правило, начиная с этого инцидента в 2:40 утра, механическое - сценарий развертывания вычисляет SHA-256 локально, загружает, получает удаленный файл и #39;s хэш, и отказывается перевернуть " текущая версия & quot; указатель, если они & #39; не равны. It& #39; возможно, восемь строк bash. С тех пор он поймал две усеченные загрузки, обе из которых были бы наводнением билетов. Самая дешевая страховка во всем моем конвейере.
Разбивка кэша и ETags
Браузеры кэшируют агрессивно, и "пожалуйста, hard-refresh" не является стратегией развертывания. Надежным исправлением являются имена файлов, завязанные на содержимое: хэшируйте содержимое файла и вставьте в имя часть дайджеста, поэтому app.css становиться app.2cf24dba.css, йо- Изменение содержимого, изменение хэша, изменение имени файла, промахи кэша, пользователи получают новый файл. Содержимое идентично, имя файла идентично, кэш-попадание. Laravel Mix и Vite делают это автоматически; в WP Adminify я сделал доморощенную версию, хэширующее содержимое активов для создания ver строка запроса WordPress добавляется к завещаемым скриптам - после слишком большого количества & quot; панель настроек выглядит сломанной & quot; билеты, которые были действительно устаревшими CSS. Тот же принцип питает ETags: сервер хэширует ответ, браузер отправляет хэш обратно, а совпадение означает крошечный 304 вместо полной полезной нагрузки.
Дедупликация содержимого
Хотите знать, идентичны ли два файла, не сравнивая их байт за байтом - или когда они живут на разных машинах? Хэш оба. Равные дайджесты означают равное содержание (при SHA-256 шансы на столкновение настолько абсурдно малы, что они ' не стоят того, чтобы о них думали). Это прекрасно масштабируется: хеширует тысячу загрузок, сортирует дайджесты и мгновенно дублирует кластер. I' использовали это для вывода медиатеки WordPress, в которой накопились годы logo.png, logo-1.png, и logo-final-2.png- выявлено хеширование, которые на самом деле были одним и тем же изображением с разными именами. It's также как инструменты резервного копирования решают, что пропустить и как хранилища объектов обнаруживают, что "upload" это контент, который они уже хранят.
Адресация контента в стиле git
Git хранит файлы по имени 't хранит их по хэшу. Каждая капля, дерево и фиксация обрабатываются дайджестом их содержимого (исторически SHA-1, с незавершенным переходом SHA-256). That's почему идентификаторы фиксации выглядят как хэши: они являетесь хэши, и они покрывают снимок, родители, автор, метку времени. Измените что угодно в истории и все хэши нижестоящие изменения, что делает вмешательство в историю GIT громко, а не тихо. Понимание этого изменило то, как я отлаживаю проблемы с git. Когда две машины расходятся во мнениях относительно фиксации, сравнение хэшей мгновенно говорит вам, смотрите ли вы на один и тот же объект или в дивергентную историю. Адресация контента — одна из тех идей, которые звучат академически, пока не сохранит ваше репо.
Сравнение конфигов без раскрытия секретов
цементные работы, производство не работает, и вы подозреваете .env файлы различаются - но вы don't хотите, чтобы секреты производства были вставлены в поток Slack или в общий доступ к экрану. Хэшируйте каждый файл на своей машине и вместо этого сравнивайте дайджесты. Различные хэши подтверждают, что файлы различаются, не раскрывая ни одного значения. Вы можете пойти тоньше: хэшировать отдельные строки или определенные ключи, чтобы точно определить какой запись расходится. I'уладил разногласия с поддержкой хостинга таким образом - "ваша копия конфигурации не соответствует 't соответствует моей, здесь's моя SHA-256, проверьте свою" заканчивает дебаты одним сообщением. дайджест доказывает разницу или одинаковость, в то время как секреты остаются именно там, где им место.
Отладка подписи Webhook
Полоса, GitHub, весло - все они подписывают полезные данные вебхука, обычно с помощью HMAC-SHA256, поэтому вы можете проверить, что запрос действительно исходил от них. И когда ваша проверка не удалась, отладка несчастна, потому что сбой молчит: подписи просто не совпадают ' не совпадают, а промежуточное программное обеспечение говорит нет. Девять раз из десяти виновником является полезная нагрузка - ваш фреймворк повторно сериализовал JSON, изменяя пробелы или порядок ключей, так что вы ' хеширование других байтов, чем было подписано. Хеширование необработанный Body запроса в различных точках вашего конвейера показывает вам, где именно байты мутируют. Если дайджест меняется между вашим обработчиком маршрута и функцией проверки, вы нашли слой, который касался тела. Пока ты в этом районе, мой JWT декодер удобно для соседней работы по инспектированию подписанных токенов.
MD5 против SHA-1 против SHA-256 против SHA-512: что следует использовать?
| алгоритм | Размер дайджеста | относительная скорость | Статус безопасности | Соответствующее использование |
|---|---|---|---|---|
| MD5 | 128-битный (32 шестнадцатеричные символы) | вернее | Сломанные - практические столкновения с 2004 года | Несостязательные контрольные суммы, совместимость устаревших систем, ключи кэша |
| ША-1 | 160-бит (40 шестнадцатеричных символов) | торжественный | Сломанное - столкновение с помощью SHATtered, 2017 г | устаревшие внутренние git, взаимодействие со старыми системами; ничего нового |
| ША-256 | 256-битный (64 шестнадцатеричных символов) | торжественный | обеспеченный | По умолчанию для проверки целостности, подписей, адресации контента, HMAC |
| ША-512 | 512-бит (128 символов) | Быстро (часто быстрее на 64-битных процессорах) | обеспеченный | То же, что и SHA-256; когда вам нужна дополнительная маржа или 64-битная пропускная способность |
Моя позиция, и я буду прямо в ней: По умолчанию SHA-256 и перестаньте думать об этом. Это's безопасно, универсально поддерживается, достаточно быстро, чтобы вы никогда не заметили стоимость, и it's то, о чем уже говорят ваши инструменты - сертификаты TLS, дайджесты изображений Docker, файлы блокировки пакетов, подписи вебхуков. умственная энергия, потраченная на выбор алгоритма, почти всегда лучше потратить в другом месте.
Нюанс, который стоит сохранить: MD5 не радиоактивен, это #39;s смешанный. Обнаружение случайного повреждения ваших собственных файлов? Хорошо. Что-нибудь, где противник-человек мог бы выиграть от подделки коллизии? Абсолютно нет. SHA-1 сидит в одном ведре с меньшим количеством оправданий - единственная веская причина прикоснуться к нему - это совместимость с системой, которую вы используете 't control. SHA-512 - прекрасный выбор, а иногда и быстрее на современном 64-битном оборудовании, но дайджесты из 128 символов громоздки в журналах и URL-адресах, а запас безопасности SHA-256 уже не поддается какой-либо реалистичной атаке. И ни один из четырех - повторите, ни один - не принадлежит где-либо рядом с полем паролей.
Часто задаваемые вопросы
MD5 по-прежнему безопасен в использовании?
Для безопасности нет. Практические коллизионные атаки существуют с 2004 года, а это означает, что злоумышленники могут создать два разных файла с одним и тем же дайджестом MD5. Никогда не используйте его для подписей, сертификатов, хранения паролей или любой проверки целостности, когда вмешательство вызывает беспокойство. Это остается приемлемым для неконфликтных работ - обнаружения случайного повреждения, дедупликации собственных файлов, создания ключей кэша - где никто не пытается вас обмануть. Если есть сомнения, используйте SHA-256; это ничего вам не стоит.
Можете ли вы поменять хэш, чтобы получить исходные данные?
Нет. Хеш-функции являются односторонними по замыслу - дайджест содержит гораздо меньше информации, чем большинство входных данных, поэтому реверс математически невозможен в целом. Что на самом деле делают злоумышленники, так это угадывают: хешируют миллиарды входных данных кандидатов и сравнивают дайджесты, используя радужные таблицы или грубую силу графического процессора. Это пугающе хорошо работает с короткими, распространенными входными данными, такими как пароли, хешированные с помощью быстрых алгоритмов, и именно поэтому паролям требуется медленное, соленое хеширование, а не простое MD5 или SHA-256.
В чем разница между хешированием и шифрованием?
Шифрование двустороннее: данные шифруются ключом, и любой, кто держит правильный ключ, может расшифровать их обратно в оригинал. хеширование одностороннее: вы можете вычислить дайджест из данных, но вы не можете восстановить данные из дайджеста - нет ключа и нет дешифрования. используйте шифрование, когда вам нужно вернуть данные, хеширование, когда вам нужно только проверить или сравнить.Base64, для записи, не является ни - это кодирование, обратимое кем-либо.
Какой хэш мне следует использовать для паролей?
Ни один из тех, что в этом инструменте.MD5, SHA-1, SHA-256, и SHA-512 все быстрые, и быстро фатально для паролей - GPU могут тестировать миллиарды догадок в секунду против просочившейся базы данных.Используйте намеренно медленный, соленый алгоритм: bcrypt или Argon2. Laravel's Hash::make () использует bcrypt по умолчанию, и большинство современных фреймворков предоставляют эквивалент.Если вы пишете необработанные хеш-вызовы для хранения паролей, остановитесь и нажмите для своего фреймворка и#39;s вместо этого хеширует пароль API.
Безопасно ли хэшировать конфиденциальные данные в онлайн-инструменте?
Только если инструмент действительно клиент-сторона.Toolz.dev Hash Generator вычисляет каждый дайджест в вашем браузере с помощью Web Crypto API - ваш ввод никогда не передается, не регистрируется и не сохраняется на каком-либо сервере.Вы можете подтвердить это самостоятельно, наблюдая за вкладкой сети, пока вы хеш. с инструментами на стороне сервера вы доверяете неизвестному оператору все, что вы вставляете, что является плохой сделкой для API секретов, ключей или данных клиента. когда сомневаетесь, проверьте, прежде чем вставить.
Почему "привет" и "привет" производят совершенно разные хэши?
Это лавинный эффект, и это преднамеренно Хорошая хеш-функция переворачивает примерно половину своих выходных битов, когда меняется даже один входной бит, поэтому похожие входные данные производят совершенно разные дайджесты. Заглавная буква меняет один байт, но дайджест становится неузнаваемым. Это особенность: это означает, что дайджесты ничего не раскрывают о том, насколько похожи два входных сигнала, и это делает любое изменение - каким бы крошечным оно ни было - невозможным пропустить при сравнении хешей.
В чем разница между SHA-256 и SHA-512?
Оба принадлежат к семейству SHA-2, указанному в FIPS 180-4, и оба считаются безопасными. SHA-256 производит 256-битный дайджест с использованием 32-битных операций; SHA-512 производит 512-битный дайджест с использованием 64-битных операций, что часто ускоряет работу современных 64-битных процессоров. На практике SHA-256 является экосистемой по умолчанию, а ее дайджесты — половина длины, что позволяет управлять журналами и URL-адресами. Выберите SHA-512 для дополнительной защиты или 64-битной пропускной способности, в противном случае SHA-256 достаточно.
Когда мне нужен HMAC вместо простого хэша?
Используйте HMAC всякий раз, когда вам нужно доказать, кто произвел хэш, а не только то, что было хешировано. простой дайджест может быть вычислен кем угодно, поэтому он проверяет целостность, но не происхождение. HMAC, определенный в RFC 2104, смешивает секретный ключ с процессом хеширования - только стороны, владеющие ключом, могут создавать или проверять действительные подписи. Это механизм, лежащий в основе подписей вебхуков от Stripe, GitHub и аналогичных служб, почти всегда как HMAC-SHA256 над телом необработанного запроса.
Корабль с отпечатками пальцев, а не верой
Хеширование - редкий инструмент, который 's и глубокая информатика, и мертвая-простая ежедневная практика. вы делаете don' вам нужно понять конструкции MerkleDamgård, чтобы извлечь из этого выгоду - вам нужна привычка. хешируйте свои артефакты выпуска. проверяйте свои загрузки. сравнивайте дайджесты вместо файлов для глаз. Каждая из этих привычек - тридцать секунд работы, и каждая в какой-то момент спасла мне ночь, которую я бы в противном случае провел, извиняясь в очереди поддержки.
выше Генератор хэш-генератора Toolz.dev Создан, чтобы сделать эту привычку без трения: четыре алгоритма, текст и файлы, режим проверки, все вычисляемые в вашем браузере, ничего не загружены. Если вы работаете над соседними понятиями, Конвертер Base64 покрывает кодирование (и почему это не безопасность), генератор паролей Обрабатывает секреты, которые вы никогда не должны хэшировать с помощью SHA-256, и JWT декодер Завершает подписанную токен-току истории.
Для более широкой картины мой Руководство по инструментам кодирования Проходит через остальную часть набора инструментов разработчика, и Конфиденциальность данных в онлайн-инстру Объясняет, почему обработка на стороне клиента — это холм, на котором я решил умереть. hash сначала, разверните второй. Ваше я в 2:40 утра буду вам благодарны.



