您好,匿名用户
随意问技术百科期待您的加入

php与nodejs的加密数据互通

+1 投票

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

#!/usr/bin/env node
    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进行解密。

用户头像 提问 2012年 12月1日 @ Lucia 上等兵 (416 威望)
分享到:

1个回答

+1 投票
 
最佳答案

需要注意的是在编译的时候需要加上--with-openssl选项

#!/usr/bin/env php
<?php
function decode($cryptkey, $iv, $secretdata){
    return openssl_decrypt($secretdata,'aes-256-cbc',$cryptkey,false,$iv);
}
function encode($cryptkey, $iv, $secretdata){
    return openssl_encrypt($secretdata,'aes-256-cbc',$cryptkey,false,$iv);
}
$cryptkey = hash('sha256','__tazai_wolf__key',true);
$iv = '1234567890000000';
$buf = "Hello World";

$enc = encode($cryptkey,$iv,$buf);
$dec = decode($cryptkey, $iv, $enc);

echo "Encoded length: ",$enc,"\n";
echo "Decoded all: ",$dec,"\n";

运行结果:

➜ ./encode.js 
Encoded length:  Gpkr1WGBFhMvNd/Hr0eaBg==
Decoded all: Hello World
➜ ./encode.php 
Encoded length: Gpkr1WGBFhMvNd/Hr0eaBg==
Decoded all: Hello World
用户头像 回复 2012年 12月1日 @ Teemo 上等兵 (318 威望)
选中 2012年 12月1日 @Lucia
提一个问题:

相关问题

0 投票
0 回复 145 阅读
0 投票
1 回复 52 阅读
用户头像 提问 2012年 12月1日 @ Viktor 上等兵 (290 威望)
0 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Shen 上等兵 (318 威望)
0 投票
1 回复 72 阅读
用户头像 提问 2012年 12月1日 @ Janna 下士 (667 威望)
0 投票
1 回复 40 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...