加密解密php与nodejs的加密数据互通
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
热门文章推荐
- [php]优酷真实视频地址解析算法
- [Dz]discuz手机版支持视频播放的方法
- [PHP]php加密js解密的方法实例
- [php]用PHP打印出前一天的时间格式
- [PHP]mpeg,mp3,avi的ffmpeg的php转换类
- [php]php中3DES加密一个非常有用的3des加密
- [PHP]php.ini修改上传文件的大小限制处理方法
- [php]用过的最好用的php分页类源代码