Bootstrap

通过AES加密前端传递参数

1.首先下载依赖  "crypto-js": "^4.2.0",

2.引入

import CryptoJS from 'crypto-js';
//AES加密
function encryptAES(data) {
	//如果参数为空或者为空对象就不生成签名
	console.log(!data,'!data!data!data!data!data!data!data!data!data!data')
	if (!data || JSON.stringify(data) === '{}') {
		return '';
		}

	// 获取参数的所有键,并按照ASCII码排序
	let keys = Object.keys(data).sort();
	
	// 遍历排序后的键数组,使用键从原始对象中获取对应的值,并使用'&'符号将它们拼接起来
	let sortedParamsString = keys.map(key => `${key}=${data[key]}`).join('&');


	return AES(sortedParamsString);
}
/** 加密函数
 * @param {Object} data
 */
function AES(data) {
	// 密钥与偏移量若与服务端有交互,则需确保它们与服务端使用的是相同的。 
	// 密钥
	const secretKey = CryptoJS.enc.Utf8.parse("8985b2c4fb1900cf");
	// 偏移量
	const iv = CryptoJS.enc.Utf8.parse('bc3f07fbe54c4b90')
	let encryptedParams = typeof data === 'string' ? data : JSON.stringify(data)
	let encrypted = CryptoJS.AES.encrypt(encryptedParams, secretKey, {
		iv: iv,
		mode: CryptoJS.mode.CBC,
		padding: CryptoJS.pad.Pkcs7
	})
	return encrypted.toString();
}
export default {
	encryptAES
}

3.在http封装里面使用

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;