·您当前的位置:首页 > 技术教程 > PHP教程 >

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

时间:2015-08-14 10:35酷播
加密解密php与nodejs的加密数据互通

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

  1. #!/usr/bin/env node 
  2.     var crypto = require('crypto'); 
  3.     //解密 
  4.     function decode(cryptkey, iv, secretdata) { 
  5.         var  
  6.         decipher = crypto.createDecipheriv('aes-256-cbc', cryptkey, iv), 
  7.         decoded  = decipher.update(secretdata, 'base64', 'utf8'); 
  8.          
  9.         decoded += decipher.final( 'utf8' ); 
  10.         return decoded; 
  11.     } 
  12.     //解密 
  13.     function encode(cryptkey, iv, cleardata) { 
  14.         var  
  15.         encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv), 
  16.         encoded  = encipher.update(cleardata, 'utf8', 'base64'); 
  17.  
  18.         encoded += encipher.final( 'base64' ); 
  19.         return encoded; 
  20.     } 
  21.  
  22.     var  
  23.     cryptkey   = crypto.createHash('sha256').update('__tazai_wolf__key').digest(), 
  24.     iv         = '1234567890000000'
  25.     buf        = "Hello World"
  26.     enc        = encode( cryptkey, iv, buf ); 
  27.  
  28.     var dec        = decode(cryptkey, iv, enc); 
  29.  
  30.     function b64enc(data) { 
  31.         var b   = new Buffer(data, 'binary'); 
  32.         return b.toString('base64'); 
  33.     } 
  34.  
  35. console.warn("Encoded length: ", enc); 
  36. 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

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器