Node.js — Calculate a SHA256 Hash

Node.js comes with a built-in crypto module and a bundled version of OpenSSL. The crypto module wraps OpenSSL providing an API for cryptographic functions.

Node.js’ crypto module provides a createHash method allowing you to calculate hashes of given content. This tutorial shows you how to use the createHash method to calculate a SHA256 hash.

Node.js Series Overview

  1. String Replace All Appearances
  2. Remove All Whitespace From a String in JavaScript
  3. Generate a Random ID or String in Node.js or JavaScript
  4. Remove Extra Spaces From a String in JavaScript or Node.js
  5. Remove Numbers From a String in JavaScript or Node.js
  6. Get the Part Before a Character in a String in JavaScript or Node.js
  7. Get the Part After a Character in a String in JavaScript or Node.js
  8. How to Check if a Value is a String in JavaScript or Node.js
  9. Check If a String Includes All Strings in JavaScript/Node.js/TypeScript
  10. Check if a Value is a String in JavaScript and Node.js
  11. Limit and Truncate a String to a Given Length in JavaScript and Node.js
  12. Split a String into a List of Characters in JavaScript and Node.js
  13. How to Generage a UUID in Node.js
  14. Reverse a String in JavaScript or Node.js
  15. Split a String into a List of Lines in JavaScript or Node.js
  16. Split a String into a List of Words in JavaScript or Node.js
  17. Detect if a String is in camelCase Format in Javascript or Node.js
  18. Check If a String Is in Lowercase in JavaScript or Node.js
  19. Check If a String is in Uppercase in JavaScript or Node.js
  20. Get the Part After First Occurrence in a String in JavaScript or Node.js
  21. Get the Part Before First Occurrence in a String in JavaScript or Node.js
  22. Get the Part Before Last Occurrence in a String in JavaScript or Node.js
  23. Get the Part After Last Occurrence in a String in JavaScript or Node.js
  24. How to Count Words in a File
  25. How to Shuffle the Characters of a String in JavaScript or Node.js
  26. Append Characters or Words to a String in JavaScript or Node.js
  27. Check if a String is Empty in JavaScript or Node.js
  28. Ensure a String Ends with a Given Character in JavaScript or Node.js
  29. Left-Trim Characters Off a String in JavaScript or Node.js
  30. Right-Trim Characters Off a String in JavaScript or Node.js
  31. Lowercase the First Character of a String in JavaScript or Node.js
  32. Uppercase the First Character of a String in JavaScript or Node.js
  33. Prepend Characters or Words to a String in JavaScript or Node.js
  34. Check if a String is a Number
  35. Convert a String to Buffer

Hash a Value in Node.js Using SHA256

Import the createHash function from the Node.js crypto module. Calling createHash requires the hash algorithm name as an argument. The return value of that call is a Hash instance that you can use to calculate a hash value for a given input.

Here’s a code snippet calculating and returning a SHA256 hash of content:

import { createHash } from 'node:crypto'

/**
 * Returns a SHA256 hash using SHA-2 for the given `content`.
 *
 * @see https://en.wikipedia.org/wiki/SHA-2
 * 
 * @param {String} content
 *
 * @returns {String}
 */
function sha256(content) {  
  return createHash('sha256').update(content).digest('hex')
}

We used Node.js v16 to write this tutorial. Node.js v16 uses SHA-2 (Secure Hash Algorithm 2) (created by the United States National Security Agency) to calculate the hash value. The SHA-2 hash algorithm is still considered secure by the security community.

Using SHA3-256 to Calculate a Hash

The SHA-3 hash algorithm is the latest member of the Secure Hash Algorithm family. SHA-3 was originally called “Keccak”. The Keccak algorithm is the winner in the NIST hash function competition.

Node.js (using OpenSSL) supports calculating a SHA256 hash using the SHA-3 algorithm. You can switch the hash function from SHA-2 to SHA-3 by passing the sha3-256 identifier to Node.js’ createHash function:

import { createHash } from 'node:crypto'

/**
 * Returns a SHA256 hash using SHA-3 for the given `content`.
 *
 * @see https://en.wikipedia.org/wiki/SHA-3
 *
 * @param {String} content
 *
 * @returns {String}
 */
function sha256(content) {  
  return createHash('sha3-256').update(content).digest('hex')
}

This calculate a SHA256 hash using the algorithm from the SHA-3 family. You can find more details for and comparisons of secure hash algorithms on this linked Wikipedia page.

Enjoy!

PS: Here’s an interesting read on Stackoverflow outlining the differences between SHA-2 and SHA-3.


Mentioned Resources

Explore the Library

Find interesting tutorials and solutions for your problems.