Product
Introducing Java Support in Socket
We're excited to announce that Socket now supports the Java programming language.
@panva/hkdf
Advanced tools
@panva/hkdf is a Node.js implementation of the HMAC-based Extract-and-Expand Key Derivation Function (HKDF) as described in RFC 5869. It is used to derive one or more keys from a single secret key, which is useful in cryptographic applications.
Key Derivation
This feature allows you to derive a key from initial key material (ikm), a salt, and optional context information (info). The derived key length and hash algorithm can be specified.
const { hkdf } = require('@panva/hkdf');
async function deriveKey() {
const ikm = Buffer.from('initial key material');
const salt = Buffer.from('salt');
const info = Buffer.from('info');
const length = 32; // length of the derived key in bytes
const hash = 'SHA-256';
const derivedKey = await hkdf(hash, ikm, salt, info, length);
console.log(derivedKey.toString('hex'));
}
deriveKey();
futoin-hkdf is another implementation of the HKDF algorithm in Node.js. It provides similar functionality to @panva/hkdf, allowing for key derivation using the HKDF algorithm. The main difference is in the API design and additional features like support for different hash algorithms.
The built-in 'crypto' module in Node.js also provides an implementation of HKDF starting from Node.js v15.0.0. It offers a more integrated approach since it is part of the standard library, but it may not be available in older Node.js versions.
HKDF with no dependencies using runtime's native crypto
HKDF is a simple key derivation function defined in RFC 5869.
▸ hkdf(digest
, ikm
, salt
, info
, keylen
): Promise
<Uint8Array
>
The given ikm
, salt
and info
are used with the digest
to derive a key of keylen
bytes.
Name | Type | Description |
---|---|---|
digest | "sha256" | "sha384" | "sha512" | "sha1" | The digest algorithm to use. |
ikm | Uint8Array | string | The input keying material. It must be at least one byte in length. |
salt | Uint8Array | string | The salt value. Must be provided but can be zero-length. |
info | Uint8Array | string | Additional info value. Must be provided but can be zero-length, and cannot be more than 1024 bytes. |
keylen | number | The length in bytes of the key to generate. Must be greater than 0 and no more than 255 times the digest size. |
Promise
<Uint8Array
>
example
ESM import
import hkdf from '@panva/hkdf'
example
CJS import
const { hkdf } = require('@panva/hkdf')
example
Deno import
import hkdf from 'https://deno.land/x/hkdf/index.ts'
example
Usage
const derivedKey = await hkdf(
'sha256',
'key',
'salt',
'info',
64
)
The supported JavaScript runtimes include ones that
FAQs
HKDF with no dependencies using runtime's native crypto
The npm package @panva/hkdf receives a total of 1,013,187 weekly downloads. As such, @panva/hkdf popularity was classified as popular.
We found that @panva/hkdf demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
We're excited to announce that Socket now supports the Java programming language.
Security News
Socket detected a malicious Python package impersonating a popular browser cookie library to steal passwords, screenshots, webcam images, and Discord tokens.
Security News
Deno 2.0 is now available with enhanced package management, full Node.js and npm compatibility, improved performance, and support for major JavaScript frameworks.