为节点.js的 JavaScript 客户端加密 AWS SDK
@aws-crypto/客户端-节点
这个 客户端节点 模块包括您需要使用 AWS 加密 SDK 的所有模块 JavaScript 有节点.js.
- 解密节点
- 加密节点
- 千米键环-节点
- 材料管理-节点
- 缓冲-材料-管理-节点
- 原始键盘节点
- 生- rsa- keyring- 节点
对于显示如何创建密钥环和加密及解密数据的模块的代码示例,请安装 示例节点 模块.
安装
要安装此模块, 请使用 npm 软件包管理器 。 安装帮助请参见 https://www.npmjs.com/get-npm (英语)。 。 。 .
npm install @aws-crypto/client-node
使用情况
详细代码示例 告诉你如何使用这些模块 创建密钥环 并加密和解密数据, 安装 示例节点 模块.
/* 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 the KMS keyring */
const keyring = new KmsKeyringNode({ 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 cleartext = 'asdf'
/* 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, cleartext, { 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, return the plaintext. */
测试
npm test
兼容性考虑
RSA 选项
Node.js Crypto不支持由其他执行AWS加密SDK支持的所有 RSA 密钥包装选项
支持的配置为:
- OAEP 有SHA1, MGF1 有SHA1
- PKCS1v15 车次
许可证
此 SDK 分布于 Apache 许可证,2.0版本, (中文(简体) ), 更多信息见LICENSE.txt和Notice.txt.