您的位置:首页 > Web前端 > Node.js

加密解密php与nodejs的加密数据互通

2016-10-20 23:53 274 查看
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进行解密。

需要注意的是在编译的时候需要加上--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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: