本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 JavaScript 的 AWS Encryption SDK 的相容性
適用於 JavaScript 的 AWS Encryption SDK 的設計是為了與 AWS Encryption SDK 的其他語言實作互通。在大多數情況下,您可以使用 適用於 JavaScript 的 AWS Encryption SDK 加密資料,並使用任何其他語言實作 (包括 AWS Encryption SDK 命令列介面) 來解密資料。並且您可以使用適用於 JavaScript 的 AWS Encryption SDK解密已加密的訊息由其他語言實現AWS Encryption SDK。
但是,當您使用 適用於 JavaScript 的 AWS Encryption SDK 時,您需要注意語言 JavaScript 實作和 Web 瀏覽器中的一些相容性問題。
此外,使用不同的語言實作時,請務必設定相容的主密鑰提供程式、主密鑰和鑰環。如需詳細資訊,請參閱 Keyring 相容性。
適用於 JavaScript 的 AWS Encryption SDK 相容性
AWS Encryption SDK 的 JavaScript 實作與其他語言實作在下列方面有所不同:
-
適用於 JavaScript 的 AWS Encryption SDK 的加密操作不會傳回無框架加密文字。但是,適用於 JavaScript 的 AWS Encryption SDK 會將 AWS Encryption SDK 的其他語言實作傳回的框架和無框架加密文字解密。
-
從 Node.js 版本 12.9.0 開始,Node.js 支援以下 RSA 金鑰包裝選項:
-
具有 SHA1、SHA256、SHA384 或 SHA512 的 OAEP
-
具有 SHA1 的 OAEP 和具有 SHA1 的 MGF1
-
PKCS1v15
-
-
在版本 12.9.0 之前,Node.js 僅支援以下 RSA 金鑰包裝選項:
-
具有 SHA1 的 OAEP 和具有 SHA1 的 MGF1
-
PKCS1v15
-
瀏覽器相容性
某些 Web 瀏覽器不支援 適用於 JavaScript 的 AWS Encryption SDK 所需的基本密碼編譯操作。如需設定備用程式,您可以彌補部分遺漏的操作。WebCrypto瀏覽器實現的 API。
Web 瀏覽器限制
下列限制為所有 Web 瀏覽器通用:
-
所以此WebCryptoAPI 不支援 PKCS1v15 金鑰包裝。
-
瀏覽器不支援 192 位元金鑰。
必要的密碼編譯操作
適用於 JavaScript 的 AWS Encryption SDK 需要在 Web 瀏覽器中執行以下操作。如果瀏覽器不支援這些操作,則它與 適用於 JavaScript 的 AWS Encryption SDK 相容。
-
瀏覽器必須包含
crypto.getRandomValues()
,這是一種以密碼編譯方式產生隨機值的方法。如需支援crypto.getRandomValues()
,請參我可以使用密碼編譯。getRandomValues()?。
必要的備用
適用於 JavaScript 的 AWS Encryption SDK 需要下列程式庫並在 Web 瀏覽器中執行以下操作。如果您支援不符合這些需求的 Web 瀏覽器,則必須設定備用。否則,嘗試使用 適用於 JavaScript 的 AWS Encryption SDK 搭配瀏覽器將會失敗。
-
所以此WebCryptoAPI 會在 Web 應用程式中執行基本密碼編譯操作,但並非可在所有瀏覽器上使用。如需支援 Web 密碼編譯的 Web 瀏覽器版本的相關資訊,請參閱我可以使用 Web 密碼編譯嗎?
。 -
Safari Web 瀏覽器的現代版本不支援零位元組的 AES-GCM 加密,而這是 AWS Encryption SDK 所需。如果瀏覽器實現WebCryptoAPI,但無法使用 AES-GCM 來加密零位元組,適用於 JavaScript 的 AWS Encryption SDK僅使用回退庫進行零字節加密。它使用WebCryptoAPI 進行所有其他操作。
若要設定任一限制的備用,請將下列陳述式新增至您的程式碼。在 configureFallbackmsrcrypto
),但是您可以以相容的程式庫取代它。如需完整範例,請參閱 fallback.ts
import { configureFallback } from '@aws-crypto/client-browser' configureFallback(
msrCrypto
)