Інструменти розробника · SHA калькулятор хешу
Hex, Base64 і Raw Bytes: Три способи, щоб написати SHA Дайджест
· Як працює
Опубліковано ToolAcre · Редакція журналу
шемале256 бази64 коди файл-формати

sha256sum друкує шестигранний, package-lock.json магазини base64 і Docker використовує a sha256: префікс. Вони можуть бути однаковими 32 bytes. Цей пост пояснює кожне представництво та як перетворити між ними.
У разі виникнення помилок, які виглядають різними, але погоджуються — рядок замка та контрольний контроль за тим самим файлом
А.А SHA-256 дайджест є фундаментальним 32 bytes. Як ви пишете ці байти визначає, що виглядає травлення. Один травень, 32 ідентичні байти, з'являються як 64 гексадекма символів (два за байт), або 44 base64 символи (хоча чотири за три байти), або різні довжини і формати в залежності від кодування. Згуба виникає, тому що фіксатор може показати одне уявлення і термінал показує ще одну, як і для того ж, що він є одним 32 bytes.
Розуміння коду є кроком, який перетворюється "Чому це виглядає різним?" в "Я можу підтвердити, що вони однакові." Всі три представництва є еквівалентними, як тільки ви відшифруєте їх назад до байтів.
Аварія — байти — 20, 32, 48 або 64 від них в залежності від алгоритму, перед будь-яким текстовим кодуванням
Перед тим як виникати текстове уявлення, результат - АррайБуфер байтів. ToolAcre обмотує, що буфер з Uint8Array, потім або пише кожну байт як дві шестигранних цифр або перетворює кожну байт на бінарний характер перед викликом btoa. Неформатний форматувальник переходить на хеш, а не змінює один дайджест.
Ширина байта: SHA-1 повертає двадцять байтів, SHA-256 тридцять-два, SHA-384 сорок і SHA-512 шістдесят-чотири. Підтримуються результати, які перевіряють метадані алгоритму та тести. Сирі байти підходять для программатичного порівняння; шестигранний і базовий64 - це транспортні позначення для каналів, які очікують текст.
Hex — два символи за допомогою, чому він домінує інструменти командного рядка, а питання справи
Хокадекморефографічне представлення використовує цифри 0-9 і листи А-Ф (або а-ф) для представлення 16 можливі значення 4-розміщений нік. Два цифри шестигранних представляють собою один байт. Мистецтво SHA-256 абзац вхідного абца 32 bytes, так що він відображає як 64 символи шістдесяти: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Це формат найбільш командно-лінійних інструментів друку. Хексадекмоло - це людино-прочитані і неоднозначні; кожен байт представлений точно тим самим двома героями кожного разу.
Hexadecimal - формат за замовчуванням для перевірки та отримання запитів в документації та на командному рядку. Не можна читати і копіювати, і немає накидок, не існує чутливості до справи в перекладі (хоча конвенції диктує нижній край або верхній край, послідовно), і не спеціальних символів, які потребують викопування URL або JSON. Поза «69» — це те, що вона займає двічі більше символів, як сирі байти, що є чому інші формати існують.
Base64 і base64url — грубо чотири символи на три байти, накидка, і де з'являється кожен (SRI, пнм, SSH відбитки пальців
Base64 кодує три байти як чотири символи, що намальовані з 64-character алфавіт: A-Z, a-z, 0-9, +, /. Три байти 61 62 63 (до ASCII коди для абс) кодування як YWJj в base64. Повне 32-бага SHA-256 зашифровані коди, як приблизно 44 base64 символи. Падінг з = символи приносить довжину виходу на кілька 4, так що 44 символи плюс 0 труси (because) 32 є декількома 3, не потрібно накидатися. Випадковий зворотний процес: чотири базові64 символи декодування до трьохбайтів.
Base64 з'являється в package-lock.json файли, npm усадка, SRI (Субреджер Integrity) атрибути в HTMLй SSH пальці ключі. Він компактний — грубо 33% довше, ніж сирі байти, у порівнянні з шексадекма 100% довший. Звільнення торгівлі є те, що не всі текстові представництва однаково прості у читання; base64 виглядає більш масштабовано до очей людини, ніж шестигранний.
Префіксовані форми — sha256: в контейнерних травах, sha384- в атрибутах цілісності, SHA256: в SSH
Base64url - це варіант, визначений в RFC 4648 які замінники - і для + і /. Анотація на ґендери, а-з, 0-9, -, . JWTs використовують base64url, тому + і / мають спеціальні значення в URL (+ можна прочитати як простір в рядках запиту, / є роздільним засобом для доріжок. А.А JWT сегмент завжди base64url-encoded, а декодер, який наполягає на стандартній основі64, відхиляє його. Неприємно, base64url decoder, який не приймає стандартного алфавіту, не буде на стандартній основі64.
Накладка необов'язково в base64url. Стандартні підстави64 колодки з = щоб забезпечити довжину виходу є декількома 4. Base64url, як правило, omits = сам URL-липкість. Декодер повинен приймати base64url з або без наповнювача, і енкодер повинен бути явним про те, що він виробляє. Про нас ToolAcre base64 інструмент приймає як алфавіти, так і переносить відсутні накладки на вхід, і дозволяє вибрати формат на виході.
Переглянуто один перетравлений з шестигранної до бази64 і назад, з перепадами байтів
Передфіксовані форми додають ідентифікатор схеми до травлення. Здобиччювальні засвоювані зображення використовують sha256:ba7816bf ..., де sha256: є префіксом. SSH використання відбитків пальців SHA256:, з товстою колоною. Деякі інструменти використовують sha256= або SHA256= (з знаком рівності). Передфікс є чисто інформативним; він каже, що алгоритм виготовив травлення. Видалення префіксу залишає такі ж байти в одному кодуванні.
При порівнянні з травами, префікс шум. Якщо один інструмент друкує SHA256:ba78... і інші друки ba78..., вони однакові перетрави; префікс є просто метадані щодо формату. Аналогічно, префікси, як sha256:- (використані в деяких контейнерних контекстах) або sha384- (використані атрибутами цілісності) форматуються конвенції, які не змінюють байтів. Роздягання їх для порівняння.
Що це не охоплює — який кодує даний інструмент випромінює; перевірте формат виведення перед порівняння
Один травень SHA-256 з'являється в декількох формах: шестигранний (64 символи), base64 з накидом (44 символи), base64url з накидом (44 символи, з - і замість + і /), або з різними префіксами. Для підтвердження того, що вони однакові, зашифруйте кожну спину в байтах і порівнюйте байти. Список шестигранних байтів ba7816bf ... decodes to bytes 0xba 0x78 0x16 0xbf 0x8f 0x01 0xcf 0xea ... Базова64-аповідність перетворюється в одну і ту ж послідовність, коли декодовано.
Мистецтво ToolAcre SHA виходи з шестигранних калькуляторів у шістнадцятковому режимі за замовчуванням. Якщо вам потрібен base64, ви можете використовувати окремий інструмент для перетворення шестигранної в базовий64, або використовувати базову64 утиліту на одному сайті, щоб закодувати текст безпосередньо. Інструменти, призначені для конкретних контекстів (npm для конкретних контекстів) package-lock.jsonВихід на зображення засвоюється у форматі їх контекстних expects. Розуміння, що це все одно 32 bytes в різних одязі знімає згубність при незгоді з використанням інструментів.
Поруч: порівняти байти, не рядки — комп’ютерні травлення з ToolAcre SHA калькулятор хешу, потім конвертуйте в представлення, ви перевіряєте проти
Для ручного перетворення шестигранного перетравлення в base64, групувати цифри шестигранних в байти, конвертувати кожну байт в десятковий, потім закодувати за допомогою базового64 алфавіту. Текст 0ксба (христина белла) є десятковий 186; 0х78 є 120; 0х16 є 22; 0xbf - 0xbf 191. Узгоджуючи ці чотирибайти і кодування як base64 дає символи w (0 + 22 в алфавіті), як (коди 186), АА (коди 120), вр (коди 191). Повне травлення вимагає цього 10 час і начинка, якщо необхідно. Цей ручний процес є обструктивним, але нудним; інструмент для конвертування base64 робить його миттєвим.
Ключовим є те, що перетравлення є байти першим, а текстове представлення є вторинним. Кожен кодування тих же байтів відхиляється до тих же байтів і тим самим взаємозамінний для цілей перевірки цілісності. Відмінності корпусу в шістнадці, відмінність наповнювачів в base64, префікси, і спакс є всі варіанти форматування, які не впливають на фактичне значення. Коли ви навчите можливість конвертувати між представництвами, помилки формату травлення стають проблемами з відключенням, які ви можете вирішити замість містерій.