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.