SubtleCrypto: phương thức decrypt()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Phương thức decrypt() của giao diện SubtleCrypto giải mã một số dữ liệu đã mã hóa.
Nó nhận làm đối số một key để giải mã, một số tham số bổ sung tùy chọn, và dữ liệu cần giải mã (còn được gọi là "ciphertext" - văn bản mã hóa).
Nó trả về một Promise sẽ được fulfill với dữ liệu đã giải mã (còn được gọi là "plaintext" - văn bản gốc).
Cú pháp
decrypt(algorithm, key, data)
Tham số
algorithm-
Một đối tượng chỉ định thuật toán sẽ sử dụng, và bất kỳ tham số bổ sung nào khi cần. Các giá trị được truyền cho các tham số bổ sung phải khớp với những giá trị đã truyền vào lệnh gọi
encrypt()tương ứng.- Để sử dụng RSA-OAEP, truyền một đối tượng
RsaOaepParams. - Để sử dụng AES-CTR, truyền một đối tượng
AesCtrParams. - Để sử dụng AES-CBC, truyền một đối tượng
AesCbcParams. - Để sử dụng AES-GCM, truyền một đối tượng
AesGcmParams.
- Để sử dụng RSA-OAEP, truyền một đối tượng
key-
Một
CryptoKeychứa khóa sẽ dùng để giải mã. Nếu sử dụng RSA-OAEP, đây là thuộc tínhprivateKeycủa đối tượngCryptoKeyPair. data-
Một
ArrayBuffer, mộtTypedArray, hoặc mộtDataViewchứa dữ liệu cần giải mã (còn được gọi là ciphertext).
Giá trị trả về
Một Promise được fulfill với một ArrayBuffer chứa văn bản gốc.
Ngoại lệ
Promise bị reject khi gặp các ngoại lệ sau:
InvalidAccessErrorDOMException-
Ném lên khi thao tác được yêu cầu không hợp lệ đối với khóa đã cung cấp (ví dụ: thuật toán mã hóa không hợp lệ, hoặc khóa không hợp lệ cho thuật toán mã hóa đã chỉ định).
OperationErrorDOMException-
Ném lên khi thao tác thất bại vì lý do cụ thể của thao tác (ví dụ: tham số thuật toán có kích thước không hợp lệ, hoặc có lỗi khi giải mã ciphertext).
Các thuật toán được hỗ trợ
Phương thức decrypt() hỗ trợ các thuật toán tương tự như phương thức encrypt().
Ví dụ
Note: Bạn có thể thử các ví dụ hoạt động trên GitHub.
RSA-OAEP
Đoạn mã này giải mã ciphertext bằng RSA-OAEP. Xem mã đầy đủ trên GitHub.
function decryptMessage(privateKey, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "RSA-OAEP" },
privateKey,
ciphertext,
);
}
AES-CTR
Đoạn mã này giải mã ciphertext bằng AES ở chế độ CTR.
Lưu ý rằng counter phải khớp với giá trị đã sử dụng để mã hóa. Xem mã đầy đủ trên GitHub.
function decryptMessage(key, ciphertext) {
return window.crypto.subtle.decrypt(
{ name: "AES-CTR", counter, length: 64 },
key,
ciphertext,
);
}
AES-CBC
Đoạn mã này giải mã ciphertext bằng AES ở chế độ CBC. Lưu ý rằng
iv phải khớp với giá trị đã sử dụng để mã hóa. Xem mã đầy đủ trên GitHub.
function decryptMessage(key, ciphertext) {
// Giá trị iv giống như giá trị đã sử dụng để mã hóa
return window.crypto.subtle.decrypt({ name: "AES-CBC", iv }, key, ciphertext);
}
AES-GCM
Đoạn mã này giải mã ciphertext bằng AES ở chế độ GCM. Lưu ý rằng
iv phải khớp với giá trị đã sử dụng để mã hóa. Xem mã đầy đủ trên GitHub.
function decryptMessage(key, ciphertext) {
// Giá trị iv giống như giá trị đã sử dụng để mã hóa
return window.crypto.subtle.decrypt({ name: "AES-GCM", iv }, key, ciphertext);
}
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| Web Cryptography Level 2> # SubtleCrypto-method-decrypt> |
Tương thích trình duyệt
Xem thêm
SubtleCrypto.encrypt().- RFC 3447 chỉ định RSAOAEP.
- NIST SP800-38A chỉ định chế độ CTR.
- NIST SP800-38A chỉ định chế độ CBC.
- NIST SP800-38D chỉ định chế độ GCM.
- FIPS 198-1 chỉ định HMAC.