Байты и шестнадцатеричный текст
Часть раздела Аутентификация и безопасность путешествия по Node.js на Coddy. Урок 1 из 24.
Криптографические функции работают с байтами. Байт — это число от 0 до 255. UTF-8 кодирует текст в виде байтов, а Buffer хранит эти байты в Node. Шестнадцатеричная система, или hex, записывает каждый байт двумя символами, используя цифры от 0 до 9 и буквы от a до f. Благодаря этому байты удобно хранить в виде текста.
const bytes = Buffer.from('Ok', 'utf8');
bytes.toString('hex'); // '4f6b'
Buffer.from('4f6b', 'hex').toString('utf8'); // 'Ok'Байт буквы O — это 79 в десятичной системе счисления; в hex он записывается как 4f.
Это преобразование обратимо: оно меняет представление, а не информацию. Кодирование пароля в hex не защищает его. Парольную хеш-функцию проверяют, заново вычисляя производное значение, а не декодируя его. Здесь входные данные — обычный текст, а упражнение возвращает их представление в hex, чтобы ты мог сравнить обе формы.
Задание
ЛегкоЭто небольшой практический проект. Настройка уже выполнена; редактируй только exercise.js.
Верни поле hex, содержащее переданный текст, закодированный в байты UTF-8, а затем в шестнадцатеричном формате. Отправка {"text":"Hi"} методом POST на /result вернёт {"hex":"4869"}. Для текста Ada результатом будет 416461.
Попробуйте сами
export function exercise({ text }) {
return { hex: text };
}
Все уроки раздела Аутентификация и безопасность
1Пароли
Байты и шестнадцатеричный текстПолучение ключа пароляНовая сольНикогда не храните паролиСравнение байтов ключаПроверка пароляПравила регистрацииПотренируйтесь самостоятельно: Песочница Express