Search code examples
phpnode.jsencryptionphpseclibcryptojs

How to decrypt cipher AES from phpseclib in Node.Js


I tried to encrypt with phpseclib (default)

include 'AES.php';
$aes = new Crypt_AES();
$aes->setKey('abcdefghijklmnop');

$encrypt = $aes->encrypt("hello");
echo base64_encode($encrypt);
echo "<br />";
echo $aes->decrypt($encrypt);

Output:

CAX/zDb/Vdu/063a7fE+qQ==
hello

and Node.js for decrypt

var CryptoJS = require("crypto-js");
var key = 'abcdefghijklmnop';

// Decrypt
var bytes  =     CryptoJS.AES.decrypt(CryptoJS.enc.Base64.parse('CAX/zDb/Vdu/063a7fE+qQ=='), key);
var plaintext = bytes.toString(CryptoJS.enc.Utf8);

console.log(plaintext);

However, there are no output.


Solution

  • var CryptoJS = require("crypto-js");
    var key = CryptoJS.enc.Utf8.parse('abcdefghijklmnop');
    var iv = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    
    // Decrypt
    var bytes  =     CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse('CAX/zDb/Vdu/063a7fE+qQ==')}, key, {iv: iv});
    var plaintext = bytes.toString(CryptoJS.enc.Utf8);
    
    console.log(plaintext);
    

    That worked for me.