What is crypto.createPrivatekey in Node.Js?
crypto.createPrivatekey in Node.Js
crypto is a Node.Js module that implements an algorithm for data encryption and decryption. This is used for security purposes such as user authentication, where the password is stored in an encrypted form in the database.
The
cryptomodule includes hash, HMAC, cipher, decipher, sign, and verify classes.cryptois embedded into Node.js, so it does not necessitate a lengthy setup and configuration process. You don’t need to installcryptobefore using it in your Node, unlike other modules.
Cryptography is supported via the Node.js crypto module. It comprises a collection of wrappers for open SSL’s hash HMAC, cipher, decipher, sign, and verify functions, as well as cryptographic features.
Hash is a fixed-length string of bits that is generated arbitrarily and deterministically from some arbitrary source data.
HMAC is an acronym for Hash-based Message Authentication Code. It’s a method for generating a single final hash by applying a hash algorithm to both data and a secret key.
Cryptography methods
There are different methods for encryption in cryptography:
- Symmetric encryption cryptography
- Asymmetric encryption cryptography
- Hashing, etc.
Explanation
Symmetric encryption utilizes the same secret key to encode the raw messages at the source, communicate the encrypted message to the recipient, and afterward, decrypt the message.
Example
- “A” = “01”,
- “B” = “02”
- “Hey” = "080525
Asymmetric encryption utilizes two different keys. The public and private keys encrypt and decrypt data.
The public key can be dispersed transparently, while the private key is known uniquely to the owner. A person can encode a message using the recipient’s public key, and it gets decrypted only by the recipient’s private key.
Syntax
To use the createPrivateKey, we need to import the crypto module and assign the private or secret key to a variable.
const crypto = require('crypto');
const secretKey= 'abcdefg';
Parameters
-
keystring or Arraybuffer -
formatstring -
encodingstring -
typestring
The previous versions of
crypto.createPrivateKey(key) has specific keys.
| Versions | Description |
|---|---|
| 15.12.0 | Key can be JWK o |
| - | |
| 15.0.0 | key can be an ArrayBuffer. Encoding option was added and the key cannot contain more than **32-1 bytes |
| 11.6.0 | PrivateKey added in v11.6.0 |
The key creates and returns a new key object containing a private key. The key can be a string or a Buffer and when this occurs, the format is assumed to be 'pem'. Otherwise, key would be an object.
A simple encryption and decryption pattern
const crypto = require('crypto');const encryption = 'sha256';const secretKey= 'abcdefg';const iv = crypto.randomBytes(16);const encrypted = (text) => {const cipher = crypto.createCipheriv(encryption, secretKey, iv);const encrypted = Buffer.concat([cipher.update(text), cipher.final()]);return {iv: iv.toString('hex'),content: encrypted.toString('hex')};};const decrypted = (hash) => {const decipher = crypto.createDecipheriv(encryption, secretKey, Buffer.from(hash.iv, 'hex'));const decrpyted = Buffer.concat([decipher.update(Buffer.from(hash.content, 'hex')), decipher.final()]);return decrpyted.toString();};module.exports = {encrypted,decrypted};
How to use the keys in Node.js
Crypto can be used to encrypt and decode data in Node.js.
To install it, run npm install crypto-js, and then use the following functions to encrypt and decrypt.
Explanation
We have a single hash in the preceding code, which was generated with the crypto module and the 'sha256' function.
We created a single hash by encrypting the strings abcdefg and Welcome to my Page.