Web Crypto API

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

注意:此功能在 Web Workers 中可用。

Web Crypto API 是一種介面,允許指令碼使用加密原語來構建使用加密的系統。

一些瀏覽器曾實現過一個名為 Crypto 的介面,但它定義不明確且在加密方面不嚴謹。為了避免混淆,在實現 Web Crypto API 的瀏覽器中,此介面的方法和屬性已被移除,所有 Web Crypto API 的方法都可以在一個新的介面上獲得:SubtleCryptoCrypto.subtle 屬性提供了訪問實現該介面的物件的途徑。

警告: Web Crypto API 提供了一系列低階加密原語。非常容易誤用它們,並且其中涉及的陷阱可能非常隱蔽。

即使您正確使用了基本的加密函式,安全的金鑰管理和整體安全系統設計也極其難以做到完美,並且通常是安全專家領域的專業知識。

安全系統設計和實現的錯誤可能導致系統的安全性完全失效。

請學習並進行實驗,但在經過精通此主題的專業人士的徹底審查之前,不要保證或暗示您的工作的安全性。Crypto 101 課程是開始學習安全系統設計和實現的絕佳起點。

介面

Crypto

提供基本的加密功能,例如加密強度的隨機數生成器,以及透過 SubtleCrypto 物件訪問加密原語。可以透過主執行緒作用域的全域性物件 Window.crypto 或工作執行緒作用域的全域性物件 WorkerGlobalScope.crypto 來訪問此型別的物件。

SubtleCrypto

表示一個提供低階加密功能的物件的介面,用於金鑰生成、加密、解密、金鑰包裝和解包等。

CryptoKey

表示一個加密 金鑰,該金鑰是從 SubtleCrypto 方法 generateKey()deriveKey()importKey()unwrapKey() 中獲得的。

字典

AesCbcParams

表示當使用 AES-CBC 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的物件。

AesCtrParams

表示當使用 AES-CTR 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的物件。

AesGcmParams

表示當使用 AES-GCM 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的物件。

AesKeyGenParams

表示當生成 AES 金鑰時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.generateKey() 的物件:即當演算法被標識為 AES-CBCAES-CTRAES-GCMAES-KW 之一時。

CryptoKeyPair

表示用於非對稱加密演算法的公鑰和私鑰對。

EcKeyGenParams

表示當生成任何基於橢圓曲線的金鑰對時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.generateKey() 的物件:即當演算法被標識為 ECDSAECDH 時。

EcKeyImportParams

表示當生成任何基於橢圓曲線的金鑰對時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的物件:即當演算法被標識為 ECDSAECDH 時。

EcdhKeyDeriveParams

表示當使用 ECDH 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.deriveKey() 的物件。

EcdsaParams

表示當使用 ECDSA 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.sign()SubtleCrypto.verify() 的物件。

HkdfParams

表示當使用 HKDF 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.deriveKey() 的物件。

HmacImportParams

表示當生成 HMAC 演算法的金鑰時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的物件。

HmacKeyGenParams

表示當生成 HMAC 演算法的金鑰時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.generateKey() 的物件。

Pbkdf2Params

表示當使用 PBKDF2 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.deriveKey() 的物件。

RsaHashedImportParams

表示當匯入任何基於 RSA 的金鑰對時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.importKey()SubtleCrypto.unwrapKey() 的物件:即當演算法被標識為 RSASSA-PKCS1-v1_5RSA-PSSRSA-OAEP 之一時。

RsaHashedKeyGenParams

表示當生成任何基於 RSA 的金鑰對時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.generateKey() 的物件:即當演算法被標識為 RSASSA-PKCS1-v1_5RSA-PSSRSA-OAEP 之一時。

RsaOaepParams

表示當使用 RSA_OAEP 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.encrypt()SubtleCrypto.decrypt()SubtleCrypto.wrapKey()SubtleCrypto.unwrapKey() 的物件。

RsaPssParams

表示當使用 RSA-PSS 演算法時,應作為 `algorithm` 引數傳遞給 SubtleCrypto.sign()SubtleCrypto.verify() 的物件。

其他介面的擴充套件

Window.crypto

表示與主執行緒作用域中的全域性物件關聯的 Crypto 物件。

WorkerGlobalScope.crypto

表示與工作執行緒作用域中的全域性物件關聯的 Crypto 物件。

規範

規範
Web 加密級別 2
# crypto-interface

瀏覽器相容性