在PHP中加密字符串并在Node.js中解密

11 浏览
0 Comments

在PHP中加密字符串并在Node.js中解密

我正在通过Apache和Node.js服务器之间的不安全连接发送数据。我需要在PHP中加密数据,在Node.js中解密数据。我花了两天的时间尝试让它工作,但我只能让消息签名起作用,没有加密。我尝试使用AES128-CBC,AES256-CBC,DES,AES128,AES256作为算法,但没有一个很好地工作...。

我在PHP中尝试了以下代码:

$data = json_encode(Array('mk' => $_SESSION['key'], 'algorithm' => 'SHA1', 'username' => $_SESSION['userid'], 'expires' => $expires));
$payload = openssl_encrypt($data, 'des', '716c26ef');
return base64_encode($payload);

在Node.js中尝试了以下代码:

var enc_json = new Buffer(response[1], 'base64');
var decipher = crypto.createDecipher('des', '716c26ef');
var json = decipher.update(enc_json).toString('ascii');
json += decipher.final('ascii');

除了错误的解密数据外,我还遇到了以下错误:

TypeError: error:0606508A:digital envelope routines:EVP_DecryptFinal_ex:data not multiple of block length
TypeError: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length

由于数据不是太敏感(没有密码或用户数据),所以我需要一个简单的加密方法,但数据只能被接收者读取。密钥长度可以是任意的,但加密/解密的过程必须尽可能简单,请不要使用初始化向量。

0