Node.JS和PHP AES-128-EBC数据encryption

我试图在javascript(node.js)中生成一个encryption的数据块,然后通过HTTP传递给另一个系统。 我已经在PHP中给出了一个参考系统来比较我的结果。

由于看似无法理解的原因,我无法让我的JavaScript版本产生与PHP版本相同的encryption数据。 我检查了我使用的密钥是一样的。 有没有人有任何线索或提示什么,所以我做错了什么。

(是的,我知道欧洲央行不好,但这不是我的select)

参考PHP的实现

<?php function getEncrypt($str, $key) { $realKey = substr($key, 0, 16); $padding = pkcs5_pad($str, 16); return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $realKey, $padding, MCRYPT_MODE_ECB)); } function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } $key = "oi3sgkosQPIdFa0eVSjecIhkha2nAfpn3anAozln0e9rkIGPvzUBgToCtlXLsKyjBITGKozHmn1NArgQodawidiVnyxccsf8ZnUgof4kq0iBCS7wrG1raytauMusRjjb"; $string = '{"pol.start":"11-06-2012 09:00:00","pol.end.after":43200,"lic.cache":"yes","playback":2880,"out.digital":"use","out.analog":"use"}'; $encData = getEncrypt($string, $key); var_dump($encData); 

我的Javascript尝试:

 var crypto = require('crypto'); var cipherAlgo = 'AES-128-ECB'; var policy = '{"pol.start":"11-06-2012 09:00:00","pol.end.after":43200,"lic.cache":"yes","playback":2880,"out.digital":"use","out.analog":"use"}'; var sharedSecret = 'oi3sgkosQPIdFa0eVSjecIhkha2nAfpn3anAozln0e9rkIGPvzUBgToCtlXLsKyjBITGKozHmn1NArgQodawidiVnyxccsf8ZnUgof4kq0iBCS7wrG1raytauMusRjjb'; var util = require('util'); function encrypt(string, key) { var realKey = key.substring(0,16); var cipher = crypto.createCipher(cipherAlgo, key.substring(0,16)); //encrypt our string var encrypted = cipher.update(string, 'utf8', 'base64'); encrypted += cipher.final('base64'); return encrypted; } console.log(encrypt(policy, sharedSecret)); 

我已经尝试了很多东西,例如将输出转换为二进制,放入缓冲区和base64等等。
对于我的理智的爱可以有人帮助这一点。