Spec-Zone.ru › Web APIs

SubtleCrypto: метод digest()

Базовая реализация Широко доступна

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Примечание: Эта функция доступна в Web Workers.

Метод digest() интерфейса SubtleCrypto генерирует дайджест заданных данных. Дайджест — это короткое значение фиксированной длины, полученное из входных данных переменной длины. Криптографические дайджесты должны обладать свойством стойкости к коллизиям, что означает сложность получения двух различных входных данных с одинаковым значением дайджеста.

Он принимает в качестве аргументов идентификатор алгоритма дайджеста и данные для дайджестирования. Он возвращает Promise, который будет выполнен с дайджестом.

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

Синтаксис

digest(algorithm, data)

Параметры

algorithm

Это может быть строка или объект с единственным свойством name, которое является строкой. Строка указывает используемую функцию хеширования. Поддерживаемые значения:

  • "SHA-1" (но не используйте это в криптографических приложениях)
  • "SHA-256"
  • "SHA-384"
  • "SHA-512".
data

Объект ArrayBuffer, TypedArray или DataView содержащий данные для дайджестирования.

Возвращаемое значение

A Promise, который выполняется с ArrayBuffer, содержащим дайджест.

Поддерживаемые алгоритмы

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

Алгоритм Длина результата (бит) Размер блока (бит) Спецификация
SHA-1 160 512 FIPS 180-4, раздел 6.1
SHA-256 256 512 FIPS 180-4, раздел 6.2
SHA-384 384 1024 FIPS 180-4, раздел 6.5
SHA-512 512 1024 FIPS 180-4, раздел 6.4

Предупреждение: SHA-1 теперь считается уязвимым и не должен использоваться в криптографических приложениях.

Примечание: Если вы ищете информацию о создании keyed-hash message authentication code (HMAC), используйте SubtleCrypto.sign().

Примеры

Дополнительные примеры использования API digest() см. в Некриптографические использования SubtleCrypto.

Базовый пример

В этом примере кодируется сообщение, вычисляется его дайджест SHA-256 и выводится длина дайджеста:

const text =
  "An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";

async function digestMessage(message) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message);
  const hash = await window.crypto.subtle.digest("SHA-256", data);
  return hash;
}

digestMessage(text).then((digestBuffer) =>
  console.log(digestBuffer.byteLength),
);

Преобразование дайджеста в шестнадцатеричную строку

Дайджест возвращается как ArrayBuffer, но для сравнения и отображения дайджесты часто представляются шестнадцатеричными строками. В этом примере вычисляется дайджест, а затем преобразуется ArrayBuffer в шестнадцатеричную строку:

const text =
  "An obscure body in the S-K System, your majesty. The inhabitants refer to it as the planet Earth.";

async function digestMessage(message) {
  const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
  const hashBuffer = await window.crypto.subtle.digest("SHA-256", msgUint8); // hash the message
  const hashArray = Array.from(new Uint8Array(hashBuffer)); // convert buffer to byte array
  const hashHex = hashArray
    .map((b) => b.toString(16).padStart(2, "0"))
    .join(""); // convert bytes to hex string
  return hashHex;
}

digestMessage(text).then((digestHex) => console.log(digestHex));

Спецификации

Спецификация
API Веб-криптографии
# SubtleCrypto-method-digest

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
digest 41
37–41В версиях Chrome до 41 параметр algorithm ожидался как объект.
79
12–79Не поддерживается: SHA-1.
34 28
24–28В версиях Opera до 28 параметр algorithm ожидался как объект.
7 41
37–41В версиях Chrome Android до 41 параметр algorithm ожидался как объект.
34 28
24–28В версиях Opera Android до 28 параметр algorithm ожидался как объект.
7 4.0
3.0–4.0В версиях Samsung Internet до 4.0 параметр algorithm ожидался как объект.
41
37–41В версиях WebView Android до 41 параметр algorithm ожидался как объект.

См. также

  • Некриптографические использования SubtleCrypto
  • Спецификация Chromium по безопасным origin
  • FIPS 180-4 описывает семейство алгоритмов дайджестирования SHA.

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API