3DES js加解密
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');
ciph += cipher.final('base64');
console.log(alg, ciph);
return ciph;
}
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,
//缺省为CBC
mode: CryptoJS.mode.CBC,
//缺省为Pkcs7
padding: CryptoJS.pad.Pkcs7
});
var ciph = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
console.info(ciph);
return ciph;
}
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,
//缺省为CBC
mode: CryptoJS.mode.CBC,
//缺省为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'
});