YApi使用进阶说明 AES RSA
Pre-request Script 使用说明
查看源码中 context.utils 的功能支持
context.utils = Object.freeze({ _: _, CryptoJS: CryptoJS, jsrsasign: jsrsasign, base64: utils.base64, md5: utils.md5, sha1: utils.sha1, sha224: utils.sha224, sha256: utils.sha256, sha384: utils.sha384, sha512: utils.sha512, unbase64: utils.unbase64, axios: axios });
常用的js方法及调用方式
时间格式化:
dateFormat("YYYYmmddHHMMSSsss",new Date());
//格式化时间戳
function dateFormat(fmt, date) {
let ret;
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString(), // 秒
"s+":date.getMilliseconds().toString()
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt;
}
随机字符串:
getRandomStr(16)
//获取随机字符串
function getRandomStr(len){
// var len=32;//32长度
var radix=16;//16进制
var chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
var uuid=[],i;
radix=radix||chars.length;
if(len){for(i=0;i<len;i++)uuid[i]=chars[0|Math.random()*radix];}else{var r;uuid[8]=uuid[13]=uuid[18]=uuid[23]='-';uuid[14]='4';for(i=0;i<36;i++){if(!uuid[i]){r=0|Math.random()*16;uuid[i]=chars[(i==19)?(r&0x3)|0x8:r];}}}
return uuid.join('');
}
RSA加密:
参考 https://kjur.github.io/jsrsasign/api/symbols/KJUR.crypto.Cipher.html#constructor
var start ="-----BEGIN PUBLIC KEY-----\n";
var end ="\n-----END PUBLIC KEY-----";
var appSecret="";
appSecret=start+appSecret+end;var random =getRandomStr(16);
console.log("random加密前:",random);
var RandomHead = rsaEncrypt(random,appSecret);
console.log("random加密后:",RandomHead);//RSA加密
function rsaEncrypt(data,public_key){
var pub = context.utils.jsrsasign.KEYUTIL.getKey(public_key);
var enc = context.utils.jsrsasign.KJUR.crypto.Cipher.encrypt(data,pub);
enc = context.utils.CryptoJS.enc.Base64.stringify(context.utils.CryptoJS.enc.Hex.parse(enc));
return enc;
}