nodeJS对接JAVA服务端遇到的https双向认证和DES加

2018-11-08  本文已影响0人  勾起一抹笑容

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();

上一篇下一篇

猜你喜欢

热点阅读