php与nodejs的加密数据互通

nodejs的加密解密代码示例如下:

  
var crypto = require('crypto'); 
//解密
function decode(cryptkey, iv, secretdata) {
var
decipher = crypto.createDecipheriv('aes-256-cbc', cryptkey, iv),
decoded = decipher.update(secretdata, 'base64', 'utf8');

decoded += decipher.final( 'utf8' );
return decoded;
}
//解密
function encode(cryptkey, iv, cleardata) {
var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv),
encoded = encipher.update(cleardata, 'utf8', 'base64');
encoded += encipher.final( 'base64' );
return encoded;
}

var cryptkey = crypto.createHash('sha256').update('__tazai_wolf__key').digest(),
iv = '1234567890000000',
buf = "Hello World",
enc = encode( cryptkey, iv, buf );

var dec = decode(cryptkey, iv, enc);

function b64enc(data) {
var b = new Buffer(data, 'binary');
return b.toString('base64');
}

console.warn("Encoded length: ", enc);
console.warn("Decoded all: " + dec);

请问php能相应的加密解密代码应该如何写?
要求能解上面加密后的如:Gpkr1WGBFhMvNd/Hr0eaBg==
也能加密数据给nodejs进行解密。

小飞
小飞
6842
编辑于2012-03-02
评论 (0)链接2012-02-25 

试试下面代码转换

  
<?php

function encrypt($key,$text)
{
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $text, MCRYPT_MODE_CBC, md5(md5($key)))));
}

function decrypt($key,$text)
{
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($text), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}

$key = '1234567890000000';
$text = ' Hello World ';

//加密
$encryptStr = encrypt($key,$text);

//解密
$decryptStr = decrypt($key,$text);

?>

你在php手册里研究一下mcrypt_encrypt、mcrypt_decrypt这两个函数的用法!

小飞
小飞
6842
编辑于 2012-03-02
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (1)链接 • 2012-02-26
  • 0 支持
    aes 256在PHP中是MCRYPT_RIJNDAEL_256不错,但是sha256肯定不是两次MD5,这个key明显是个固定值,在node中输出以后,放PHP里来带入运算 – gently 2012-05-24

不是您所需,查看更多相关问题与答案

德问是一个专业的编程问答社区,请 登录注册 后再提交答案