How to generate random bytes in Node.JS

Easy! I discovered this recently and it is interesting to me. Here is a quick example: const crypto = require(‘crypto’); console.log(crypto.randomBytes(1).toString(“hex”)); console.log(crypto.randomBytes(2).toString(“hex”)); console.log(crypto.randomBytes(4).toString(“hex”)); console.log(crypto.randomBytes(8).toString(“hex”)); console.log(crypto.randomBytes(16).toString(“hex”)); console.log(crypto.randomBytes(32).toString(“hex”)); console.log(crypto.randomBytes(64).toString(“hex”)); When you run this code you might see something similar to this: E:\NodeJS>node randomCrypto.js d8 dccd 0709fee2 67d6d7c51cc59f0d af19069e601e47a9141d27d7d828a9d0 f83b7547452099462061734791da57443cc60828de7dcb8f7494eedceb3c889c e2e4a1faaf4190898aaf4fa786e20fe076237854ae4628127cb2eda4bafd3000b42788e347ade94d0c98614a40586b71ded3044879f791adedd6c0d4bb22e9ac The argument passed to the function is the length in bytes, when …

How to Sign data and Verify signature in Node.JS

Another example that occurred to me. Very useful. What will we need? Private key in PEM format Public key in PEM format To get those you will have use OpenSSL, please take a look at this post How to generate RSA public and private keys with OpenSSL. For this example I am using the following 2048 bit RSA key pair: …

How to generate RSA public and private keys with OpenSSL

Before anything, I assume that you already have OpenSSL installed in your PC. In case you don’t and you are a Windows you can download it from this URLs: http://slproweb.com/products/Win32OpenSSL.html http://gnuwin32.sourceforge.net/packages/openssl.htm I personally used the first one. After you are done with the installation follow this steps: Open a command line window and run the following command: openssl genrsa -out …

Elliptic Curve Diffie-Hellman and AES Example in Node.JS

Recently I learned how to generate shared secrets using ECDH in Node.JS, but I still had to know how to use this shared secret. Here is one application for it. Use the ECDH to generate a shared secret and then use that shared secret to cipher/decipher messages between both parties, in this case Joe and Zoe. Here is the code: …

How to generate Diffie Hellman key pair in Node.JS

Super easy using crypto library. You can create a file called DiffieHellmanKeyPairGeneration.js for example and paste this code inside: console.log(‘\n- — ( Diffie Hellman Key Pair Generator ) — -‘); var crypto = require(‘crypto’); var bitSize = 2048; var dh = crypto.createDiffieHellman(bitSize); dh.generateKeys(); console.log(‘Private Key:\n’ + dh.getPrivateKey(‘base64’)); console.log(‘\n’); console.log(‘Public Key:\n’ + dh.getPublicKey(‘base64’)); console.log(‘— End —‘); Then run it, wait…wait…wait…wait…wait…wait…, and you …

How to list supported Ciphers, Hashes, and Curves for Crypto in Node.JS

Not a complicated task. Here is the code: var crypto = require(‘crypto’); console.log(); console.log(‘[ SUPPORTED CIPHERS ]\n’) console.log(crypto.getCiphers()); console.log(); console.log(‘[ SUPPORTED HASHES ]\n’) console.log(crypto.getHashes()); console.log(); console.log(‘[ SUPPORTED CURVES ]\n’) console.log(crypto.getCurves()); Your output should be similar to this: E:\Codes\NodeJS\Cryptography>node listAllAlgorithms.js [ SUPPORTED CIPHERS ] [ ‘CAST-cbc’, ‘aes-128-cbc’, ‘aes-128-cbc-hmac-sha1’, ‘aes-128-cbc-hmac-sha256’, ‘aes-128-ccm’, ‘aes-128-cfb’, ‘aes-128-cfb1’, ‘aes-128-cfb8’, ‘aes-128-ctr’, ‘aes-128-ecb’, ‘aes-128-gcm’, ‘aes-128-ofb’, ‘aes-128-xts’, ‘aes-192-cbc’, ‘aes-192-ccm’, ‘aes-192-cfb’, …

How to Encrypt / Decrypt with AES in Node.JS

Easy as pie! var crypto = require(‘crypto’); var AES128 = “aes128”; var AES192 = “aes192”; var AES256 = “aes256”; var password = ‘Austin’; var plainText = ‘Texas to the bone!’; // ———————————————— var cipher = crypto.createCipher(AES128, password); var decipher = crypto.createDecipher(AES128, password); console.log(‘AES-128:’); // Encrypting with AES128 var encText = cipher.update(plainText, ‘utf8’, ‘hex’); encText += cipher.final(‘hex’); console.log(encText); // Decrypting with …