What is @aws-crypto/raw-aes-keyring-node?
@aws-crypto/raw-aes-keyring-node is an npm package provided by AWS that allows you to use raw AES keyrings for client-side encryption and decryption in Node.js applications. It is part of the AWS Encryption SDK, which provides tools for encrypting and decrypting data securely.
What are @aws-crypto/raw-aes-keyring-node's main functionalities?
Encrypting Data
This code sample demonstrates how to use the @aws-crypto/raw-aes-keyring-node package to encrypt data. It creates a RawAesKeyringNode with a specified key and uses it to encrypt a plaintext message.
const { RawAesKeyringNode, encrypt } = require('@aws-crypto/client-node');
const { KeyringNode } = require('@aws-crypto/raw-aes-keyring-node');
const keyName = 'example-key';
const keyNamespace = 'example-namespace';
const unencryptedMasterKey = Buffer.from('00112233445566778899aabbccddeeff', 'hex');
const keyring = new RawAesKeyringNode({
keyName,
keyNamespace,
unencryptedMasterKey
});
const plaintext = Buffer.from('Hello, world!');
(async () => {
const { result } = await encrypt(keyring, plaintext);
console.log(result); // Encrypted data
})();
Decrypting Data
This code sample demonstrates how to use the @aws-crypto/raw-aes-keyring-node package to decrypt data. It creates a RawAesKeyringNode with a specified key and uses it to decrypt an encrypted message.
const { RawAesKeyringNode, decrypt } = require('@aws-crypto/client-node');
const { KeyringNode } = require('@aws-crypto/raw-aes-keyring-node');
const keyName = 'example-key';
const keyNamespace = 'example-namespace';
const unencryptedMasterKey = Buffer.from('00112233445566778899aabbccddeeff', 'hex');
const keyring = new RawAesKeyringNode({
keyName,
keyNamespace,
unencryptedMasterKey
});
const encryptedData = Buffer.from('...'); // Replace with your encrypted data
(async () => {
const { plaintext } = await decrypt(keyring, encryptedData);
console.log(plaintext.toString()); // Decrypted data
})();
Other packages similar to @aws-crypto/raw-aes-keyring-node
crypto
The built-in 'crypto' module in Node.js provides cryptographic functionality that includes a set of wrappers for OpenSSL's hash, HMAC, cipher, decipher, sign, and verify functions. While it is not as high-level as @aws-crypto/raw-aes-keyring-node, it provides the fundamental tools needed for encryption and decryption.
node-forge
node-forge is a JavaScript library that provides a native implementation of TLS (and various other cryptographic tools) in Node.js. It offers more flexibility and lower-level control compared to @aws-crypto/raw-aes-keyring-node, but requires more effort to implement secure encryption and decryption workflows.
sjcl
Stanford Javascript Crypto Library (SJCL) is a library for cryptography in JavaScript. It is designed to be fast, small, and easy to use. While it is more lightweight compared to @aws-crypto/raw-aes-keyring-node, it does not provide the same level of integration with AWS services.
aws-encryption-sdk-javascript
The AWS Encryption SDK for JavaScript is a client-side encryption library
designed to make it easy for everyone to encrypt
and decrypt data using industry standards and best practices.
It uses a data format compatible with the AWS Encryption SDKs in other languages.
For more information on the AWS Encryption SDKs in all languages,
see the Developer Guide.
This package should only be used as part of the AWS Encryption SDK for Javascript.
For more information about the packages in this project
and how they can be used together,
see the main node package readme
Installing
npm install @aws-crypto/raw-aes-keyring-node
Testing
npm test
License
This SDK is distributed under the
Apache License, Version 2.0,
see LICENSE.txt and NOTICE.txt for more information.