3DES js encryption and decryption

 

 3DES js encryption and decryption

 

NodeJS

 

 

var crypto = require('crypto');

 

function encrypt(param) {

  var key = new Buffer (param.key);

  var iv = new Buffer(param.iv ? param.iv : 0);

  var plaintext = param.plaintext;

  var alg = param.alg;

  var autoPad = param.autoPad;

 

  //encrypt  

  var cipher = crypto.createCipheriv(alg, key, iv);

  cipher.setAutoPadding(autoPad); //default true  

  var ciph = cipher.update(plaintext, 'utf8', 'base64');

  cipher += cipher.final('base64');

  console.log(alg, ciph);

  return cip;

 

}

 

function decrypt(param) {

  var key = new Buffer (param.key);

  var iv = new Buffer(param.iv ? param.iv : 0);

  var encrypttext = param.encrypttext;

  var alg = param.alg;

  var autoPad = param.autoPad;

    //decrypt  

  var decipher = crypto.createDecipheriv(alg, key, iv);

  decipher.setAutoPadding(autoPad);

  var txt = decipher.update(encrypttext, 'base64', 'utf8');

  txt += decipher.final('utf8');

  console.log(alg, txt);

  return txt;

}

 

encrypt({

  alg: 'des-ede3-cbc', //3des-cbc  

  autoPad: true,

  key: 'cntaipingcomcn@lx100$#36',

  plaintext: '1249603',

  iv: '74756231'

});

 

decrypt({

  alg: 'des-ede3-cbc', //3des-cbc  

  autoPad: true,

  key: 'cntaipingcomcn@lx100$#36',

  encrypttext: 'bFPvUJsj4Ms=',

  iv: '74756231'

});

 

encrypt({

  alg: 'des-ede3-cbc', //3des-cbc  

  autoPad: true,

  key: 'cntaipingcomcn@lx100$#36',

  plaintext: '00001214601',

  iv: '74756231'

});

 

 

decrypt({

  alg: 'des-ede3-cbc', //3des-cbc  

  autoPad: true,

  key: 'cntaipingcomcn@lx100$#36',

  encrypttext: 'LyfI0BvWSSEYg0TpQVbbzg==',

  iv: '74756231'

});

 

 

CryptoJS

 

https://github.com/sytelus/CryptoJS

 

<script src="tripledes.js"></script>

 

 function encrypt(param) {

        var keyHex = CryptoJS.enc.Utf8.parse(param.key);

        var ivHex = CryptoJS.enc.Utf8.parse(param.iv);

        var encrypted = CryptoJS.TripleDES.encrypt(param.plaintext, keyHex, {

            iv: ivHex,

            //default is CBC

            mode: CryptoJS.mode.CBC,

            //The default is Pkcs7

            padding: CryptoJS.pad.Pkcs7

        });

        var ciph = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);

        console.info (ciph);

        return cip;

    }

 

    function decrypt(param) {

        var keyHex = CryptoJS.enc.Utf8.parse(param.key);

        var ivHex = CryptoJS.enc.Utf8.parse(param.iv);

 

        var decrypted = CryptoJS.TripleDES.decrypt({

            ciphertext: CryptoJS.enc.Base64.parse(param.encrypttext)

        }, keyHex, {

            iv: ivHex,

            //default is CBC

            mode: CryptoJS.mode.CBC,

            //The default is Pkcs7

            padding: CryptoJS.pad.Pkcs7

        });

        var txt = decrypted.toString(CryptoJS.enc.Utf8);

        console.info(txt);

        return txt;

    }

 

    encrypt({

        key: 'cntaipingcomcn@lx100$#36',

        plaintext: '1249603',

        iv: '74756231'

    });

 

    decrypt({

        key: 'cntaipingcomcn@lx100$#36',

        encrypttext: 'bFPvUJsj4Ms=',

        iv: '74756231'

    });

 

    encrypt({

        key: 'cntaipingcomcn@lx100$#36',

        plaintext: '00001214601',

        iv: '74756231'

    });

 

 

    decrypt({

        key: 'cntaipingcomcn@lx100$#36',

        encrypttext: 'LyfI0BvWSSEYg0TpQVbbzg==',

        iv: '74756231'

    });

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326974086&siteId=291194637