1、DES加解密:crypt.js
var crypto=require('crypto');
const key='12345678911111122222'.substring(0,8);//key值只有前八位有效
exports.des={
algorithm:{ecb:'des-ecb',cbc:'des-cbc' },
iv:Buffer.alloc(0),//iv默认设定为0
encrypt:function(plaintext){
var cipher =crypto.createCipheriv(this.algorithm.ecb,key,this.iv);
cipher.setAutoPadding(true)//default true
var ciph =cipher.update(plaintext,'utf8','base64');
ciph +=cipher.final('base64');
return ciph;
},
decrypt:function(encrypt_text){
var decipher =crypto.createDecipheriv(this.algorithm.ecb,key,this.iv);
decipher.setAutoPadding(true);
var txt =decipher.update(encrypt_text,'base64','utf8');
txt +=decipher.final('utf8');
return txt;
}
}
2、调用加解密:descrypt.js
var cryptUtil=require('./crypt.js');
//加密
var encrypt_text=cryptUtil.des.encrypt('你好你好');
console.log(encrypt_text);//LT/5ZDgAYCzuuHAcF4n9vQ==
var decrypt_text =cryptUtil.des.decrypt(encrypt_text);
console.log(decrypt_text);//你好你好
3、向java服务器发https请求
var https = require('https');
var fs=require('fs');
var url=require('url');
var crypto = require('crypto');
var qs = require('querystring');
var cryptUtil = require("./crypt");
var cryptUtil = require("./descrypt");
var post_data={
p:'NrqLkmeQmMBFrO6hmdfJr24hRaLuAq
};
var content =qs.stringify(post_data);
var options = {
/* hostname:url.parse( 'https://www.baidu.com').hostname,*/
hostname:'www.baidu.com',
port:19151,
path:'/queryHomePage',
method:'POST',
key:fs.readFileSync('D:/home/nodes/key.pem'),
cert:fs.readFileSync('D:/home/nodes/test.pem'),
requestCert:true,//请求客户端证书
rejectUnauthorized:false,
headers: {
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'
}
};
var req =https.request(options,function (res) {
/* console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));*/
res.setEncoding('utf8');
res.on('data',function (chunk) {
/* var decrypt_text = cryptUtil.des.decrypt(chunk,0);*/
var chunkJson=JSON.parse(chunk).returnObject.toString();//向后台发请求返回的加密数据
var decrypt_text =cryptUtil.des.decrypt(chunkJson);//调用解密方法对返回的数据进行解密
console.log('BODY: ' +decrypt_text);
});
});
req.on('error',function (e) {
console.log('problem with request: ' + e.message);
});
// write data to request body
req.write(content);
req.end();
网友评论