SubtleCrypto: метод decrypt()
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод decrypt() интерфейса SubtleCrypto расшифровывает некоторые зашифрованные данные. Он принимает в качестве аргументов ключ для расшифровки, некоторые необязательные дополнительные параметры и данные для расшифровки (также известные как "шифрованный текст"). Он возвращает Promise, который будет выполнен с расшифрованными данными (также известными как "открытый текст").
Синтаксис
decrypt(algorithm, key, data)
Параметры
algorithm-
Объект, определяющий используемый алгоритм и любые дополнительные параметры, если они требуются. Значения, указанные для дополнительных параметров, должны соответствовать тем, которые были переданы в соответствующий вызов
encrypt().- Для использования RSA-OAEP, передайте объект
RsaOaepParams. - Для использования AES-CTR, передайте объект
AesCtrParams. - Для использования AES-CBC, передайте объект
AesCbcParams. - Для использования AES-GCM, передайте объект
AesGcmParams.
- Для использования RSA-OAEP, передайте объект
key-
CryptoKey, содержащий ключ, используемый для расшифровки. Если используется RSA-OAEP, это свойствоprivateKeyобъектаCryptoKeyPair. data-
ArrayBuffer,TypedArrayилиDataView, содержащие данные для расшифровки (также известные как шифрованный текст).
Возвращаемое значение
Promise, который выполняется с ArrayBuffer, содержащим открытый текст.
Исключения
Обещание отклоняется, когда возникают следующие исключения:
-
InvalidAccessErrorDOMException -
Возникает, когда запрошенная операция недействительна для предоставленного ключа (например, недействительный алгоритм шифрования или недействительный ключ для указанного алгоритма шифрования).
-
OperationErrorDOMException -
Возникает, когда операция завершилась неудачно по причине, специфичной для операции (например, параметры алгоритма неверного размера или произошла ошибка при расшифровке шифрованного текста).
Поддерживаемые алгоритмы
Метод decrypt() поддерживает те же алгоритмы, что и метод encrypt().
Примеры
Примечание: Вы можете попробовать примеры на GitHub.
RSA-OAEP
Этот код расшифровывает ciphertext с помощью RSA-OAEP. См. полный код на GitHub.
function decryptMessage(privateKey, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "RSA-OAEP" },
privateKey,
ciphertext,
);
}
AES-CTR
Этот код расшифровывает ciphertext с использованием AES в режиме CTR. Обратите внимание, что counter должен соответствовать значению, используемому для шифрования. См. полный код на GitHub.
function decryptMessage(key, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "AES-CTR", counter, length: 64 },
key,
ciphertext,
);
}
AES-CBC
Этот код расшифровывает ciphertext с использованием AES в режиме CBC. Обратите внимание, что iv должен соответствовать значению, используемому для шифрования. См. полный код на GitHub.
function decryptMessage(key, ciphertext) {
// The iv value is the same as that used for encryption
return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}
AES-GCM
Этот код расшифровывает ciphertext с использованием AES в режиме GCM. Обратите внимание, что iv должен соответствовать значению, используемому для шифрования. См. полный код на GitHub.
function decryptMessage(key, ciphertext) {
// The iv value is the same as that used for encryption
return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}
Спецификации
| Спецификация |
|---|
| Web Cryptography API # SubtleCrypto-method-decrypt |
Совместимость браузеров
| Рабочие столы | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
decrypt |
37 | 7912–79Не поддерживается: AES-CTR. |
34 | 24 | 7 | 37 | 34 | 24 | 7 | 3.0 | 37 |
См. также
-
SubtleCrypto.encrypt(). - RFC 3447 определяет RSAOAEP.
- NIST SP800-38A определяет режим CTR.
- NIST SP800-38A определяет режим CBC.
- NIST SP800-38D определяет режим GCM.
- FIPS 198-1 определяет HMAC.
© 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/decrypt