@aws-crypto/client-browser

中文文档
5.0.2发布于 2026/07/24Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 4753

The client-browser module includes all of the modules you need to use the AWS Encryption SDK for the JavaScript web browser.

原始使用文档
文档目录9 节
  1. install
  2. use
  3. test
  4. Compatibility Considerations
  5. WebCrypto availability
  6. Zero Byte AES-GCM operations
  7. RSA Options
  8. 192 Bit Keys
  9. license

AWS Encryption SDK for JavaScript client for the Browser

@aws-crypto/client-browser

The client-browser module includes all of the modules you need to use the AWS Encryption SDK for the JavaScript web browser.

  • decrypt-browser
  • encrypt-browser
  • kms-keyring-browser
  • material-management-browser
  • caching-materials-manager-browser
  • raw-aes-keyring-browser
  • raw-rsa-keyring-browser
  • web-crypto-backend

For code examples that show you how to these modules to create keyrings and encrypt and decrypt data, install the example-browser module.

install

To install this module, use the npm package manager. For help with installation, see https://www.npmjs.com/get-npm.

npm install @aws-crypto/client-browser

use

For detailed code examples that show you how to these modules to create keyrings and encrypt and decrypt data, install the example-browser module.


/* Start by constructing a keyring. We'll create a KMS keyring.
 * Specify an AWS Key Management Service (AWS KMS) customer master key (CMK) to be the
 * generator key in the keyring. This CMK generates a data key and encrypts it. 
 * To use the keyring to encrypt data, you need kms:GenerateDataKey permission 
 * on this CMK. To decrypt, you need kms:Decrypt permission. 
 */
const generatorKeyId = 'arn:aws:kms:us-west-2:658956600833:alias/EncryptDecrypt'

/* You can specify additional CMKs for the keyring. The data key that the generator key
 * creates is also encrypted by the additional CMKs you specify. To encrypt data, 
 *  you need kms:Encrypt permission on this CMK. To decrypt, you need kms:Decrypt permission.
 */ 
const keyIds = ['arn:aws:kms:us-west-2:658956600833:key/b3537ef1-d8dc-4780-9f5a-55776cbb2f7f']

/* Create a KMS client provider with your AWS credentials */
const clientProvider = getClient(KMS, {
  credentials: {
    accessKeyId,
    secretAccessKey
  }
})

/* Create the KMS keyring */
const keyring = new KmsKeyringBrowser({ clientProvider, generatorKeyId, keyIds })

/* Set an encryption context For more information: 
 * https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/concepts.html#encryption-context
 */
const context = {
    stage: 'demo',
    purpose: 'simple demonstration app',
    origin: 'us-west-2'
  }
 
/* Create a string to encrypt */
const plainText = new Uint8Array([1, 2, 3, 4, 5])

/* Encrypt the string using the keyring and the encryption context 
 * the Encryption SDK returns an "encrypted message" (`result`) that includes the ciphertext, 
 * the encryption context, and the encrypted data keys.
 */ 
const { result } = await encrypt(keyring, plainText, { encryptionContext: context })

/* Decrypt the result using the same keyring */
const { plaintext, messageHeader } = await decrypt(keyring, result)

/* Get the encryption context */
const { encryptionContext } = messageHeader

/* Verify that all values in the original encryption context are in the 
 * current one. (The Encryption SDK adds extra values for signing.) 
 */
Object
  .entries(context)
  .forEach(([key, value]) => {
    if (encryptionContext[key] !== value) throw new Error('Encryption Context does not match expected values')
    })

/* If the encryption context is verified, log the plaintext. */
document.write('</br>Decrypted:' + plaintext)
console.log(plaintext)

test

npm test

Compatibility Considerations

WebCrypto availability

The WebCrypto API is not available on all browsers. A fallback can be configured. An example of a fallback library is: MSR Crypto

import { configureFallback } from '@aws-crypto/client-browser'
configureFallback(msrCrypto)

For details on configureFallback see: @aws-crypto/web-crypto-backend

Zero Byte AES-GCM operations

Modern versions of Safari do not support AES-GCM on zero bytes. The AWS Encryption SDK needs this to operate. To fix this, configure a fallback library exactly as above. The AWS Encryption SDK will only use the fallback for zero byte operations.

RSA Options

The WebCrypto API does not support PKCS1v15 RSA key wrapping.

192 Bit Keys

Browsers do not support key lengths of 192 bits.

license

This SDK is distributed under the Apache License, Version 2.0, see LICENSE.txt and NOTICE.txt for more information.

版本与发布记录

@aws-crypto/client-browser 共发布 36 个版本,首次发布于 2019/06/22;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.0.2latest2026/07/243 个月前
4.2.42026/07/243 个月前
5.0.02026/04/246 个月前
4.2.22026/03/078 个月前
4.2.12025/04/111.6 年前
4.2.02025/02/281.7 年前

关于 @aws-crypto/client-browser 的常见问题

@aws-crypto/client-browser 是什么?

The client-browser module includes all of the modules you need to use the AWS Encryption SDK for the JavaScript web browser.

如何安装 @aws-crypto/client-browser?

在项目目录运行 npm install @aws-crypto/client-browser,或使用 pnpm add / yarn add / bun add。

@aws-crypto/client-browser 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-crypto/client-browser 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aws-crypto/client-browser 可以商用吗?

@aws-crypto/client-browser 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-crypto/client-browser 的下载量有多少?

根据 npm 官方下载统计,@aws-crypto/client-browser 在 2026/10/08 – 2026/11/06 这 30 天内被下载 4,753 次,日均约 158 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-crypto/client-browser 还在维护吗?

最新版本 5.0.2 发布于 2026/07/24(3 个月前);至今共发布 36 个版本,其中过去 12 个月发布了 4 个;首次发布于 2019/06/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。