SCRYPT demo in Node.JS v15

SCRYPT is yet another password-based key derivation function that allows you to tweak its arguments in order to discourage brute-force attacks. Basically you can adjust the options to make it slower, and therefore brute-force attacks will need more time to be performed. Here is an example of how to use SCRYPT to generate keys and IVs to use with all …

Password Based Key Derivation Function 2 (PBKDF2) demo in Node.JS v15

A quick demo on how to use Password Based Key Derivation Function 2 (PBKDF2) to generate keys and IVs to use with all different ciphers available in Node.JS v15.x. const crypto = require(‘crypto’); const PASSWORD = “My_Secret_Password”; // Could be the password/key used to encrypt a message const ITERATIONS = 10; const DIGEST = “sha256”; crypto.getCiphers().forEach(cipher => { let cipherInfo …

Node.JS Ciphers Info in version 15.x

After the deprecation of methods createCipher(…) and createDecipher(…) due to the introduction of createCipheriv(…) and createDecipheriv(…) a lot of us had issues when specifying the keys and IVs because sometimes the key would be the incorrect size and same for the IVs. I developed a kind of brute force tester to determine the correct values and keep them in a …

How to Encrypt / Decrypt strings with RSA in Node.JS

Interesting things that go through my mind during lock-down haha! const crypto = require(‘crypto’); const PASSPHRASE = ‘I had learned that some things are best kept secret.’; const KEY_PAIR_OPTIONS = { modulusLength: 2048, publicKeyEncoding: { type: ‘spki’, format: ‘pem’ }, privateKeyEncoding: { type: ‘pkcs8’, format: ‘pem’, cipher: ‘aes-256-cbc’, passphrase: PASSPHRASE } }; const KEY_PAIR = crypto.generateKeyPairSync(‘rsa’, KEY_PAIR_OPTIONS); const RSA_PRK = …

Random Password Generator in Node.JS

The other day I thought about how to generate passwords from random arrays. Here is what I came up with: /* * RaNdom Password Generator */ const crypto = require(‘crypto’); const PASSWORD_LENGTH = 18; const LOWERCASE_ALPHABET = ‘abcdefghijklmnopqrstuvwxyz’; // 26 chars const UPPERCASE_ALPHABET = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’; // 26 chars const NUMBERS = ‘0123456789’; // 10 chars const SYMBOLS = ‘,./<>?;\'”:[]\\|}{=-_+`~!@#$%^&*()’; // …

How to hash files in Node.JS

The process is quite simple actually. Unfortunately ,as much things in Node.js, it works asynchronously, for some applications this will be perfect, but for some others it will be a mess to wait for the freaking hash to do something else, anyway I am not going to discuss that here I actually like Node.js. Please note that in the following …

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 …

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 …