=_=_=js复习

// 数组 浅拷贝
let arr = [7, 2, 3]
let cparr = [];
arr.forEach((v, index) => {
    cparr[index] = v
})
cparr[1] = 12
console.log(cparr, arr);
let cparr2 = arr.slice()
cparr2[1] = 12
console.log(cparr2, arr);
//浅拷贝对象
let obj = {name: '小米', age: 12, test: {c: 1}};
let cpobj = {}
for (const v of Object.keys(obj)) {
    cpobj[v] = obj[v]
}
console.log(cpobj)
obj.test.c = 12
console.log(cpobj)
cpobj2 = Object.assign({}, obj);
console.log(cpobj2)
// 深拷贝
cp = structuredClone(obj)
console.log(cp)
// 遍历方法
arr.forEach((value, index, array) => {
})
for (let v of arr) {
    console.log(v)
}
for (let index in arr) {
    console.log(index)
}
// 赋值
let arr2 = [7, 2, 3];
let [a, b, c] = arr2;
console.log(a, b, c);
let human = {name: 'jocker', sex: 'girl', inex: undefined}
let {name, sex, inex = 12} = human
console.log(name, sex, inex);
// ... 操作时
function add(a,...v){
    console.log(a,v)
}
add(1,2,3,4)//函数是和argument 差不多
a = [1,2,3,4];
let v = [1,2,3,...a];//和 concat
console.log(v);
console.log([].concat(a,[4,5,6]));
//String
console.log('hhhhhx'.charCodeAt(2));
console.log(String.fromCharCode(104));
//数组 python arr[1:2] js如何操作
console.log(arr.slice(1, 2),arr);
console.log(arr.splice(1, 0, 1, 2, 3)); //可以插入
console.log(arr)
console.log(arr.splice(1, 3),'删除内容会返回'); //可以删除
console.log(arr)
// 正则环节
// 隐式
let tag = `
    <a href="http://localhost.com">主页1</a>
    <a href="http://localhost.com">主页2</a>
    <a href="http://localhost.com">主页3</a>
    <a href="http://localhost.com">主页4</a>
`;
let reg = /<a href="(?<url>[\w|\/|:|\.]+)">(?<text>.+)?<\/a>/ig;
console.log(reg.test(tag)) //判断是否有
console.log(reg.exec(tag));
let key;
while (key = reg.exec(tag)?.groups){
    console.log(key)
}
// 说起这个?.
a = {test:{add(a,b){return a+b;}}};
console.log(a.test && a.test.add &&a.test.add(1,2))
console.log(a.txst?.xsaxa?.sadsa)
//Map 升级版 Obj <====> 我就不复习了 Set 总的来看没啥东西 js 可能还有Promise还有一些东西后面完善
View Code

 

let CryptoJS = require('crypto-js');
let crypto = require('crypto');
let cipherText = '123456';
// 密码加密
//信息摘要加密
// MD5
let md5_ciphertext = CryptoJS.enc.Utf8.parse(cipherText);
console.log(CryptoJS.MD5(md5_ciphertext).toString(), 'md5');
// SHA1 - SHA256
let sha1_cipherText = CryptoJS.enc.Utf8.parse(cipherText);
console.log(CryptoJS.SHA1(sha1_cipherText).toString(), 'sha1') //1 -> 160 128 -> 256 256 -> 512位
// DES or DES3
//format 重写加密和解密处理过程
let des_cipher = CryptoJS.enc.Utf8.parse(cipherText);
let key = CryptoJS.enc.Utf8.parse('12345678');//貌似不检测二进制最后一位
let iv = CryptoJS.enc.Utf8.parse('12345678');//null or 64bit
let cfg = {
    iv: iv,
    padding: CryptoJS.pad.Pkcs7,
    mode: CryptoJS.mode.CBC
}
let en_cipher_des = CryptoJS.DES.encrypt(des_cipher, key, cfg).ciphertext.toString();
let de_cipher_des = CryptoJS.DES.decrypt(CryptoJS.enc.Hex.parse(en_cipher_des).toString(CryptoJS.enc.Base64), key, cfg).toString(CryptoJS.enc.Utf8);
console.log(en_cipher_des, 'des', de_cipher_des)
let key_3 = CryptoJS.enc.Utf8.parse('123456781234567812345678');//前面2租加密解密 和后面那一串一样的话就没意义了
let en_des3 = CryptoJS.TripleDES.encrypt(des_cipher, key_3, cfg).toString();
let de_des3 = CryptoJS.TripleDES.decrypt(en_des3, key_3, cfg).toString(CryptoJS.enc.Utf8)
console.log(en_des3, 'des3', de_des3)
//AES
let aes_cipher = CryptoJS.enc.Utf8.parse(cipherText);
let aes_key = CryptoJS.enc.Utf8.parse('1234567812345678') //16or24or32
let aes_iv = CryptoJS.enc.Utf8.parse('1234567812345678')
let aes_cfg = {
    iv: aes_iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
}
let en_aes = CryptoJS.AES.encrypt(aes_cipher, aes_key, aes_cfg).toString();
let de_aes = CryptoJS.AES.decrypt(en_aes, aes_key, aes_cfg).toString(CryptoJS.enc.Utf8);
console.log(en_aes, 'aes', de_aes)
// RSA
let public_key = "-----BEGIN PUBLIC KEY-----\n" +
    "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApPiTwq4SBuKYR1wZAkGp\n" +
    "2zKiZ6hz9e2WMMlYSpt1h1Deel9C7IBinH0Szyt4F7JyOaUrHbJiOpnsvN493DiQ\n" +
    "GBbmfzWTKJXgkeWoHWD1BC53vIxIyQ9+fofHk0gDJwuazKPILmG+unZpHOw8LQAP\n" +
    "VuWh4V8AFvXpUJ3CftysGplZchZNSRaIabLfsI5fxRV5Kw1h0GN/fBhyHaNJT7xw\n" +
    "SwMsLf/dNvc8C9RY7lHeU622kS2XNe/hF486wYhzqNPx83LtddEo3RE5xCj9QZjX\n" +
    "/V+CkrlmUd25pKLowoY2E9y3fgcsZLbVK8JpC7GtT94j+6AEIO5hmFc/LkzEED6I\n" +
    "rwIDAQAB\n" +
    "-----END PUBLIC KEY-----";
let priv_key = "-----BEGIN PRIVATE KEY-----\n" +
    "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCk+JPCrhIG4phH\n" +
    "XBkCQanbMqJnqHP17ZYwyVhKm3WHUN56X0LsgGKcfRLPK3gXsnI5pSsdsmI6mey8\n" +
    "3j3cOJAYFuZ/NZMoleCR5agdYPUELne8jEjJD35+h8eTSAMnC5rMo8guYb66dmkc\n" +
    "7DwtAA9W5aHhXwAW9elQncJ+3KwamVlyFk1JFohpst+wjl/FFXkrDWHQY398GHId\n" +
    "o0lPvHBLAywt/9029zwL1FjuUd5TrbaRLZc17+EXjzrBiHOo0/Hzcu110SjdETnE\n" +
    "KP1BmNf9X4KSuWZR3bmkoujChjYT3Ld+ByxkttUrwmkLsa1P3iP7oAQg7mGYVz8u\n" +
    "TMQQPoivAgMBAAECggEAO1SzP6b/EL7Z6YAz9l3LSuxRAFrTKbWC+JTRTjPO9xWc\n" +
    "jgJIvWoHDSTmaN/HVy50akr+0LVhIpZNUDfVo6gsGp3R1BpejJAqrg4cgkRmmlRj\n" +
    "98m0O6t44OTQYCXcDGTeDY8x5Yx93e3MK/zCP6Tv317C850JGTjj6nxygNG4i+/a\n" +
    "7JRz8wiiU1RksxcZPF281fWrWwqCxcew7PHZvzB44WzYC/+d759uU996Kvd99vQ0\n" +
    "U++tyMihQe0MmfLJ6ss4mv8tAcSbkmdgYz7SeqAfE1oelyBryfrVZQFbOxHt2ZGA\n" +
    "lnbdmtHea0xUkRmbut8p4PkRPhsmY/Krmocd5nUz4QKBgQDZs82yJD+37g2CJKLV\n" +
    "GcJ+s27kVw4RfdR5/B6br9yecWi3YGFGnTbUk0LbyYpgncK6OMyZPU9I6Bo7vbXl\n" +
    "DqfNotIZOaxNDEZUB20nymyjlpVGTH9WKi9PoRRvq1aG9Zhf40aXerL/jmxAvVxc\n" +
    "baGHUz6jsGGuIVhUIMhLynIvlwKBgQDB/gY3Wy67f9oxvOKF9hUfDSE5R3thhXYk\n" +
    "AOeCGl2BaaBviYXj9nhfcPIhxh29uNk/CChSLzYnVK+kKRVP1CMy3d7YyVKoK4+K\n" +
    "+UhyX5NTJQXdSjZ4DKxmlV8opb0WdS+S4rmWFy6Ml64419Aw99dKOCE6TcoP0S0a\n" +
    "6o7eyS+SqQKBgQCYBfRdMuz//w+V0wmWcE+edKS6dYRQeKMYsBObunoAdseeToJ/\n" +
    "cieo2FD29E1aXLBvpFxTojmsetBe6YKMuug5NDss/FYy06CE606xW6zzq6MAHUlK\n" +
    "nVi+bYi81lQtGHHYe/h+rWM0DHvR1aoarUAAJQR4ACKmG4j37pCQRIXqbwKBgHTH\n" +
    "kr5oKa29vYALkOHLzdMveDyfB2shiIkL8lGjxX5OM8JxKyScDsKFn30tYmH/kOgc\n" +
    "5Qj0Wsk6dbGA+c9giP/qCGjAaP3Lm1Gx1ybi2jFHLEyWjEugdXgbm3lArJ+EU+s8\n" +
    "iTQNKHyCIuMdJ7sSt4t6VqZehbEX3utBIFiFDBphAoGAHSRtXMez4rdXSCyTm0NY\n" +
    "S+03AuTmsOtnJZvZk3CHEmV5kyNVSRwb50ZF7ennFafpGSpwg0PCoCCl2jrhhfNb\n" +
    "0Pz3wHbM3smofQBDyJ154wdnTw/rrefhoTcbUqlxC8cSFa1rSDwNFHwWJdlR/0fR\n" +
    "jmT0C0ARjEPfotA9YOCPgkU=\n" +
    "-----END PRIVATE KEY-----";

// 使用公钥进行加密
function encrypt(publicKey, data) {
  return crypto.publicEncrypt(publicKey, Buffer.from(data));
}
// 使用私钥进行解密
function decrypt(privateKey, encryptedData) {
  return crypto.privateDecrypt(privateKey, encryptedData);
}
x = encrypt(public_key,'hello');
console.log(x.toString('base64'))
let base64Value = atob(x.toString('base64')); // Base64编码的值
console.log(decrypt(priv_key,Buffer.from(x,'binary')).toString())
View Code

 

posted @ 2023-09-09 22:22  inks  阅读(16)  评论(0)    收藏  举报