console.log('Hello, world!');
var relationship = require("relationship.js");
var options = {text:'儿子的爸爸的妈妈',sex:1};
console.log('relationship: ', relationship(options));
var pinyin = require("pinyin");
console.log('pinyin: ', pinyin("中心"));
Error: Cannot find module './build/Release/nodejieba.node'
修改 ".\node_modules\nodejieba\index.js"
var nodejieba = require("./build/Release/nodejieba.node"); -> var nodejieba = require(".");
// 导出
function sum(a, b) {
return a+b;
}
module.exports = sum
// 导入
//const lmd5 = require('./sum.js');
//console.log(sum(1, 2))
// 导出
module.exports = {
myAirplane:"CloudJet",
displayAirplane:function(){
return this.myAirplane;
}
};
// 导入
//const Airplane = require('./lmd5.js');
//console.log(Airplane.myAirplane);
参考 sohu3.js
对称加密算法主要有AES、DES、3DES,非对称加密算法主要有RSA、DSA、RCC
github
// npm install crypto-js -> crypto-js-4.1.1.tgz
// https://code.google.com/archive/p/crypto-js/downloads -> CryptoJS v3.1.2.zip
var CryptoJS = require("crypto-js");
//使用CryptoJS实现AES加密方法
function aa(word, key) {
var key = CryptoJS.enc.Utf8.parse(key)
, iv = CryptoJS.enc.Utf8.parse("0102030405060708")
, srcs = CryptoJS.enc.Utf8.parse(word)
, f = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return f.toString()
}
//使用CryptoJS实现AES加密方法 mode === ECB 时, 不需要 iv
function bb(word, key) {
var key = CryptoJS.enc.Utf8.parse(key)
, srcs = CryptoJS.enc.Utf8.parse(word)
, f = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return f.toString()
}
var word = '{"ids":"[1936526131]","level":"standard","encodeType":"aac","csrf_token":""}'
var key = "0CoJUm6Qyw8W8jud"
console.log('CryptoJS AES.encrypt CBC:', aa(word, key))
console.log('CryptoJS AES.encrypt ECB:', bb(word, key))
// CryptoJS AES.encrypt CBC: dNwcOgdzFvO68n6gpypa24AfvOFm7dj5j1dLPEkQHLX/cUlb+Q9sZ7hP1k4hnQqWGN0OHwXPxidkXQzd14/gsrkzk/AgUSl73E0Byn2leFE=
// CryptoJS AES.encrypt ECB: 4+FddjjhpxBNf7qYlOV0TKfNJKW+URhxizlFOtkTcOr00pKAQ80VpKvm9ApPQmSPWgrCyQo+yPTQGqQBzvVcebN3wyFVb3stHanbRSK/Yd8=
//使用CryptoJS实现AES解密方法
function cc(srcs, key) {
var key = CryptoJS.enc.Utf8.parse(key)
, iv = CryptoJS.enc.Utf8.parse("0102030405060708")
, f = CryptoJS.AES.decrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return f.toString(CryptoJS.enc.Utf8)
}
var srcs = "dNwcOgdzFvO68n6gpypa24AfvOFm7dj5j1dLPEkQHLX/cUlb+Q9sZ7hP1k4hnQqWGN0OHwXPxidkXQzd14/gsrkzk/AgUSl73E0Byn2leFE="
var key = "0CoJUm6Qyw8W8jud"
console.log('CryptoJS AES.decrypt CBC:', cc(srcs, key))
// CryptoJS AES.decrypt CBC: {"ids":"[1936526131]","level":"standard","encodeType":"aac","csrf_token":""}
//使用CryptoJS实现MD5加密
var str = '123456'
const md5 = str => CryptoJS.MD5(str).toString()//.toUpperCase()
console.log('CryptoJS md5 32位: ', md5(str))
console.log('CryptoJS md5 32位: ', md5(str).toUpperCase())
console.log('CryptoJS md5 16位: ', md5(str).substring(8,24).toUpperCase())
console.log('CryptoJS md5 16位: ', md5(str).substring(8,24))
const sha1 = str => CryptoJS.SHA1(str).toString()
console.log('CryptoJS sha1 40位: ', sha1(str))
const sha256 = str => CryptoJS.SHA256(str).toString()
console.log('CryptoJS sha256 64位: ', sha256(str))
const sha512 = str => CryptoJS.SHA512(str).toString()
console.log('CryptoJS sha512 128位: ', sha512(str))
//使用CryptoJS实现Base64编码、解码
var string = 'Hello World!';
var base64_string = "SGVsbG8gV29ybGQh"
// base64 编码 // 输出: "SGVsbG8gV29ybGQh"
var wordArray = CryptoJS.enc.Utf8.parse(string);
var base64 = CryptoJS.enc.Base64.stringify(wordArray);
console.log('Base64 encode:', base64);
// base64 解码 // 输出: "Hello World!"
var parsedWordArray = CryptoJS.enc.Base64.parse(base64_string);
var parsedStr = parsedWordArray.toString(CryptoJS.enc.Utf8);
console.log("Base64 decode:",parsedStr);
github
// npm install jsencrypt -> jsencrypt-3.2.1.tgz
navigator = this;
window = this;
var JSEncrypt = require("jsencrypt").JSEncrypt;
// JSEncrypt版本
console.log('JSEncrypt.version: ', JSEncrypt.version)
// RSA加密
function fun_rsa_encrypt(password, publicKey) {
var encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
encrypt_password = encrypt.encrypt(password);
return encrypt_password
}
// RSA解密
function fun_rsa_decrypt(encrypt_msg, privateKey) {
var decrypt = new JSEncrypt();
decrypt.setPrivateKey(privateKey);
decrypt_msg = decrypt.decrypt(encrypt_msg);
return decrypt_msg
}
// RSA分段解密 当要解密的内容过长时,要进行分段解密
//const decryptLong = (content:string) => {
// const enc = new JSEncrypt({});
// enc.setPrivateKey(LICENSE_KEY); // 私钥
// let k = enc.getKey();
// let maxLength = 128;
// try {
// let hexStr = b64tohex(content);
// if (hexStr.length > maxLength * 2) {
// let hexStrArr = hexStr.match(/.{1,256}/g); // 128位解密。取256位
// const ct = hexStrArr.map(entry => k.decrypt(entry)).join('');
// return ct;
// } else {
// return k.decrypt(hexStr);
// }
// } catch (ex) {
// return false;
// }
//};
var password = 'fjcqy527038'
var publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRD8YahHualjGxPMzeIWnAqVGMIrWrrkr5L7gw+5XT55iIuYXZYLaUFMTOD9iSyfKlL9mvD3ReUX6Lieph3ajJAPPGEuSHwoj5PN1UiQXK3wzAPKcpwrrA2V4Agu1/RZsyIuzboXgcPexyUYxYUTJH48DeYBGJe2GrYtsmzuIu6QIDAQAB";
console.log('JSEncrypt RSA encrypt: ', fun_rsa_encrypt(password, publicKey))
//window.common.token一般这种window.xxx.xxx一般是服务器返回的数据
//js内置变量直接设置
//navigator = this;
//window = this;
//location = this;
// === 是严格相等,不仅需要两个变量的值相同,还需要类型也相同。 == 是宽松下的相等,只需要值相同就能够判断相等,宽松相等是严格相等的父集。
// a 为 Object ,使用 toString
//const a = {
// i: 1,
// toString: function () {
// return a.i++;
// }
//}
//a 为 Object ,使用 valueOf
//const a = {
// i: 1,
// valueOf() {
// return this.i++
// }
//}
// 在 ES6 中 JS 新增了 Proxy 对象,能够对一个对象进行劫持,接受两个参数,第一个是需要被劫持的对象,第二个参数也是一个对象,内部也可以配置每一个元素的 get 方法:
//var a = new Proxy({ i: 1 }, {
// get(target) { return () => target.i++ }
//});
//
//if (a == 1 && a == 2 && a == 3) {
// console.log('Hello World!');
//}
console.log('null == undefined: ', null == undefined) // true
console.log('null === undefined: ', null === undefined) // false
console.log("1 == '1': ", 1 == '1') // true
console.log("1 === '1': ", 1 === '1') // false
//(x) => x + 6
//相当于
//function(x){ return x + 6; }
//
//(v,k)=>k
//相当于
//function(v,k){ return k }
//
//(x) => x + 6
//相当于
//function(x){ return x+6 }
//
//()=>{}
//相当于
//function(){}
//
//(x)=>{ return x+6 }
//相当于
//function(x){ return x + 6; }
//const md5 = str => CryptoJS.MD5(str).toString()
//相当于
//function md5(str){
// return CryptoJS.MD5(str).toString()
//}