cryptojs icon indicating copy to clipboard operation
cryptojs copied to clipboard

RangeError: Invalid array length

Open sukeerthimogallapalli opened this issue 7 years ago • 10 comments

sukeerthimogallapalli avatar Jan 30 '19 05:01 sukeerthimogallapalli

Hi

i am trying to decrypt private key but i am getting this error

/home/ahex/Desktop/tokenize.node/node_modules/crypto-js/core.js:272 words.length = Math.ceil(sigBytes / 4); ^

RangeError: Invalid array length at WordArray.init.clamp (/home/ahex/Desktop/tokenize.node/node_modules/crypto-js/core.js:272:27) at WordArray.init.concat (/home/ahex/Desktop/tokenize.node/node_modules/crypto-js/core.js:237:19)

My code :

var CryptoJS = require('crypto-js') var cryptoSecret = '*************************' var SenderPrivateKey = new bitcore.PrivateKey('testnet'); console.log(SenderPrivateKey) //<PrivateKey: 8c6251ff3ee21e54bc15485c2ea8f7491501a7a684ecc08dfd95a993f048e06e, network: //testnet>

var a = CryptoJS.AES.encrypt(SenderPrivateKey, cryptoSecret)

sukeerthimogallapalli avatar Jan 30 '19 05:01 sukeerthimogallapalli

The same problem

dmytro-kupriianov avatar Feb 02 '20 13:02 dmytro-kupriianov

The same problem

Synat avatar May 05 '20 03:05 Synat

This error is triggered when you pass an object, rather than a string.

michaelpeterlee avatar May 11 '20 01:05 michaelpeterlee

It's 2020 and I still get the same problem

gocreating avatar Jun 25 '20 12:06 gocreating

Same problem here, even passing a simple string

JuanxCursed avatar Sep 02 '20 17:09 JuanxCursed

Este error se activa cuando pasa un objeto, en lugar de una cadena.

it's true..

yquintana avatar Dec 21 '20 17:12 yquintana

When the same thing happened to me I "stringify"

CryptoJS.AES.encrypt( JSON.stringify({
    username: username,
    text: text,
    createdAt: new Date().getTime()
  }), '123456').toString();

nezihsunman avatar Jan 12 '21 14:01 nezihsunman

For me this issue occurred due to the type number.

So I did like this:

function transformToSafePayload(payload) {
  if (typeof payload == 'object') {
    return JSON.stringify(payload);
  }
  if (typeof payload != 'string') {
    return payload.toString();
  }
  return payload;
}


CryptoJS.AES.encrypt(transformToSafePayload({
    username: username,
    text: text,
    createdAt: new Date().getTime()
  }), '123456').toString();

midhun1993 avatar May 24 '23 10:05 midhun1993

exacto! mi problema fue por pasar un parametro de tipo numero. Primero tuve que pasarlo a string para encriptarlo.

mcaceresDev avatar Jun 11 '24 02:06 mcaceresDev