aes-js icon indicating copy to clipboard operation
aes-js copied to clipboard

Uncaught Error: invalid plaintext size (must be 16 bytes)

Open efcjunior opened this issue 3 years ago • 3 comments

Hi,

Why this string '210c475118a95a1778a1ab2923192d59¤80181b005a0384318f0cdcfe372f77f7¤MP3_320¤1490338212¤4¤ ' that has the length of 96 characters can't be converted to array of 16 bytes ?

This code aesjs.utils.utf8.toBytes(text) is returning 102 bytes from that string above.

Thanks.

efcjunior avatar Sep 25 '21 21:09 efcjunior

Hi,

Why this string '210c475118a95a1778a1ab2923192d59¤80181b005a0384318f0cdcfe372f77f7¤MP3_320¤1490338212¤4¤ ' that has the length of 96 characters can't be converted to array of 16 bytes ?

This code aesjs.utils.utf8.toBytes(text) is returning 102 bytes from that string above.

Thanks.

Consider 9 empty characters in the end of string.

efcjunior avatar Sep 25 '21 21:09 efcjunior

I've studying a bit about this subject because this is new to me. In PHP script everything works perfectly coding like this:

$encrypted = openssl_encrypt($data, "AES-128-ECB", $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING); But in Java Script I can't reproduce the same result with this code:

var aesEcb = new aesjs.ModeOfOperation.ecb(key); var encryptedBytes = aesEcb.encrypt(pkcs7.pad(text)); var hex = aesjs.utils.hex.fromBytes(encryptedBytes); console.log(hex);

In some tests I've noticed this flag "OPENSSL_ZERO_PADDING" in PHP is the cause of the the difference between the results. But It's the problem because I have to get the result correct that's is generated when has OPENSSL_ZERO_PADDING. Everyone has some idea ?

efcjunior avatar Sep 28 '21 03:09 efcjunior

1 char = 1 byte = 8 bits. You're trying to fit 96 bytes in a 16 bytes array

ToxxicFuse avatar Jan 24 '22 18:01 ToxxicFuse