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

js
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.

key

Một CryptoKey chứa khóa sẽ dùng để giải mã. Nếu sử dụng RSA-OAEP, đây là thuộc tính privateKey của đối tượng CryptoKeyPair.

data

Một ArrayBuffer, một TypedArray, hoặc một DataView chứ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:

InvalidAccessError DOMException

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).

OperationError DOMException

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.

js
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.

js
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.

js
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.

js
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