rsaEncrypt.js 3.28 KB
import * as CryptoSM4 from 'sm-crypto';

// 密钥对生成 http://web.chacuo.net/netrsakeypair

const publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArEAGYSWFuRIiPS3M2rYBSXWIF9251s2AsQ8ShKR1KKJ2fhzfIH5ddGLZ7SlclG/yJTLGp6B6W76KRGz3D5Kqa2v4AEiIL1Gq/U4PWE+d6zfwMEjg1S/DGytBtYyQJ8keOqZezDDZ8cqRA02YvKBCmJ6NCXtnVGeRSLLEeTcFPFkodNtBn1G3UAzE6XOVRNq6LKnAM/Ko3gZfO/9VMdMKma72j7+woO2rfVQuPSnfrqyNo5Geo4NslZZzJc4c8H63AJHLnia1IQ45mSgsdAzeEKpLR9tb89TBEVMNr+I6tJ8k0TZ8pbU6JsqZDYwoka/Sb4IgUhhF+OV1o9+999acIQIDAQAB'

const privateKey = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsQAZhJYW5EiI9LczatgFJdYgX3bnWzYCxDxKEpHUoonZ+HN8gfl10YtntKVyUb/IlMsanoHpbvopEbPcPkqpra/gASIgvUar9Tg9YT53rN/AwSODVL8MbK0G1jJAnyR46pl7MMNnxypEDTZi8oEKYno0Je2dUZ5FIssR5NwU8WSh020GfUbdQDMTpc5VE2rosqcAz8qjeBl87/1Ux0wqZrvaPv7Cg7at9VC49Kd+urI2jkZ6jg2yVlnMlzhzwfrcAkcueJrUhDjmZKCx0DN4QqktH21vz1MERUw2v4jq0nyTRNnyltTomypkNjCiRr9JvgiBSGEX45XWj37331pwhAgMBAAECggEAKo6nBNmAcHlKfFMUifTt3HhtZ3ggsjGT2isfKCZ5y9BX9lCr0Btoe5jwvue5N/NwoEArVL8RfBlXkBBb+j0CXggO/gLtosNKu8rNf8QsADGR5lwbMJDcY5oMYg6YjzvhfBwez9RCBLtHmMlTM0dlLM//iJg0r2XnP07rvAccBAybbQrobwb+t3UY3388rVWEfdU7SJ3lYA+LxneFZMhol1YhB179IzFeVJYipbrockK2LURa21xbDdsd1jFoYTIP7JDh27qfAluV5sN+5aM4QqNFCnvVEqM/1x1ITwEE9aGzoxHywJ0xAhLujqA3fGgkGuawPQkDvtHPqEZmBaM8AQKBgQDULCp7GVYI66RgUYXeF7dhs9hD+vqsQOkePZmfN0/0AlioWNUmGlybk2ivzPKuGzJrBQ/Hk7c67wyOBwQtiC4I1v/c7yQa+kp4673nJOy90OIt/1MNxMPux10cO3TrRv8uqT/LOncg35hNyBEh9UVjoWH/qlFfoXMznX2Vr4jOxQKBgQDP1LuQ/aTzORcvprmqVFAXaDjNtgp8I93TXXW2iv1Pw+EM/T1xMdjhRi5qRD0KaU7/dRuDloN94mTG/y4htMxcusJGAotJQCWE8M7cb/o27F/FikoVSoHbfBfZe1zODuksuJIsknP0W18PCo8qldg2F9IJ1GfF1pl90WsJvIVtrQKBgDnOzsQ7YvWLPn3/uDmKvKwiFApxl1rXVKyom/KFX4NcIEu96FU5WYIJ57v+WyCUyGfgOSxnUsT73K/VuY2uTNybt5q6jVvMVf4cPOF9bgNJplZh+n8F3VxxdSz8Bh8UePJ9qqP0igCq6xRGLmTSLtW2Yr0F6qXjlz+46T6fVOcBAoGBAMGsvDJMvLfQHxRP6buaIJz/idfh6flvrxt2f+jhs1fu8T2ajPR8gGDGdyCegMfABVc4ObCxxc28+S8cxE+y3bMYc0ysuEJF3fD6O7vfOiyOsF01Fv6qVUNFbDBGruBzssXzJn0U6avwrjAlJe+IfllCb4CriR0rdBR04KvNHAZtAoGBALMec9nn6PDOjCXdKjHEAkAmopfatShJI1KRC8TTnPjMvAbCsuUWezUkTj7S9ZN81F6tPaS+DdeE4CD7T7/EfjRtfxbMwPZ6b4gaXdZgCigSqa3HVh2fUD5Wlfypl3r50pKzmW6POG/o/a466bgh9CkylBpqgKfeQyNNLpE1HZA/'


const DEFAULT_KEY ="cda4442f102f6396eea76902e37ad7cb";
const DEFAULT_IV = "8bd8a83221742111c7532b7275a7fe9c";


function stringToHex(str){
	let hex = Array.prototype.map.call(str, (c) => {
		return c.charCodeAt(0).toString(16);
	}).join("");
	return hex;
}
 
const pwdKey = stringToHex(DEFAULT_KEY) //密钥替换为后端密钥
 
function encryptedSM4(text) {
	const gmCryptConfigSet = {
		padding: DEFAULT_KEY,
		mode: 'cbc',
		iv: DEFAULT_IV,
		output: 'string'
	};
	return CryptoSM4.sm4.encrypt(JSON.stringify(text), DEFAULT_KEY, gmCryptConfigSet)
}
 
 
function decryptedSM4(text) {
	const gmCryptConfigGet = {
		padding: DEFAULT_KEY,
		mode: 'cbc',
		iv: DEFAULT_IV,
		output: 'string'
	};
	const originData = CryptoSM4.sm4.decrypt(text, DEFAULT_KEY, gmCryptConfigGet);
	const charCodes = originData.split('').map(char => char.charCodeAt(0));
	// 过滤掉字符码等于0的字节
	const filteredCharCodes = charCodes.filter(code => code !== 0);
	const decryptData = filteredCharCodes.map(code => String.fromCharCode(code)).join('')
	// 将过滤后的字符码数组转换回字符串
	console.error(decryptData)
	return JSON.parse(decryptData)
}
module.exports.decryptedSM4 = decryptedSM4