title: Node JS crypto.createCipheriv Error: Invalid key length
body: <p>I am trying to encrypt text in using node.js crypto module.</p>
  <p>Here is code:</p>
  <pre class="lang-js prettyprint-override"><code>const crypto = require('crypto');
  
  const password = 'password';
  const key = crypto.scryptSync(password, 'salt', 24);
  
  const iv = crypto.randomBytes(16);
  const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
  var encrypted = cipher.update(&quot;Hello&quot;, 'utf8', 'hex') + cipher.final('hex');
  
  console.log(encrypted);
  </code></pre>
  <p>And I get following error:</p>
  <pre><code>internal/crypto/cipher.js:103
      this[kHandle].initiv(cipher, credential, iv, authTagLength);
                    ^
  
  Error: Invalid key length
  [90m    at Cipheriv.createCipherBase (internal/crypto/cipher.js:103:19)[39m
  [90m    at Cipheriv.createCipherWithIV (internal/crypto/cipher.js:121:20)[39m
  [90m    at new Cipheriv (internal/crypto/cipher.js:225:22)[39m
  [90m    at Object.createCipheriv (crypto.js:117:10)[39m
      at Object.&lt;anonymous&gt; (F:\Misc\App\MySQL-Buzzer-Electron\demo.js:7:23)
  [90m    at Module._compile (internal/modules/cjs/loader.js:1156:30)[39m
  [90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)[39m
  [90m    at Module.load (internal/modules/cjs/loader.js:1000:32)[39m
  [90m    at Function.Module._load (internal/modules/cjs/loader.js:899:14)[39m
  [90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)[39m
  </code></pre>
  <p>What am I doing wrong ?</p>