Web Crypto API
注意:此功能在 Web Workers 中可用。
Web Crypto API 是一種介面,允許指令碼使用加密原語來構建使用加密的系統。
一些瀏覽器曾實現過一個名為 Crypto 的介面,但它定義不明確且在加密方面不嚴謹。為了避免混淆,在實現 Web Crypto API 的瀏覽器中,此介面的方法和屬性已被移除,所有 Web Crypto API 的方法都可以在一個新的介面上獲得:SubtleCrypto。 Crypto.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-CBC、AES-CTR、AES-GCM 或 AES-KW 之一時。 CryptoKeyPair-
表示用於非對稱加密演算法的公鑰和私鑰對。
EcKeyGenParams-
表示當生成任何基於橢圓曲線的金鑰對時,應作為 `algorithm` 引數傳遞給
SubtleCrypto.generateKey()的物件:即當演算法被標識為 ECDSA 或 ECDH 時。 EcKeyImportParams-
表示當生成任何基於橢圓曲線的金鑰對時,應作為 `algorithm` 引數傳遞給
SubtleCrypto.importKey()或SubtleCrypto.unwrapKey()的物件:即當演算法被標識為 ECDSA 或 ECDH 時。 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_5、RSA-PSS 或 RSA-OAEP 之一時。 RsaHashedKeyGenParams-
表示當生成任何基於 RSA 的金鑰對時,應作為 `algorithm` 引數傳遞給
SubtleCrypto.generateKey()的物件:即當演算法被標識為 RSASSA-PKCS1-v1_5、RSA-PSS 或 RSA-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 |
瀏覽器相容性
載入中…