Encrypt and decrypt text using PBKDF2 and AES

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.2.0/crypto-js.min.js"></script>

JavaScript

const keySize = 256
const iterations = 10000

const encrypt = (msg, pass) => {
  const salt = CryptoJS.lib.WordArray.random(128 / 8);
  const key = CryptoJS.PBKDF2(pass, salt, {
    keySize: keySize / 32,
    iterations: iterations,
  });
  const iv = CryptoJS.lib.WordArray.random(128 / 8);
  const encrypted = CryptoJS.AES.encrypt(msg, key, {
    iv: iv,
    padding: CryptoJS.pad.Pkcs7,
    mode: CryptoJS.mode.CBC,
  });
  return salt.toString() + iv.toString() + encrypted.toString();
};

const decrypt = (transitmessage, pass) => {
  const salt = CryptoJS.enc.Hex.parse(transitmessage.substr(0, 32));
  const iv = CryptoJS.enc.Hex.parse(transitmessage.substr(32, 32));
  const encrypted = transitmessage.substring(64);
  const key = CryptoJS.PBKDF2(pass, salt, {
    keySize: keySize / 32,
    iterations: iterations,
  });
  return CryptoJS.AES.decrypt(encrypted, key, {
    iv: iv,
    padding: CryptoJS.pad.Pkcs7,
    mode: CryptoJS.mode.CBC,
  }).toString(CryptoJS.enc.Utf8);
};

for (var i = 0; i < 100; i++) {
  var msg = CryptoJS.lib.WordArray.random(256 / 8).toString();
  var password = CryptoJS.lib.WordArray.random(20).toString();
  var ct = encrypt(msg, password)
  var dt = decrypt(ct, password)
  if (dt !== msg) {
      console.log(msg)
      console.log(ct)
      console.log(dt)
  }
}
console.log('Done')