记录使用第三方库sm-crypt进行SM4国密加,解密

1.安装sm-crypto库

可以使用npm来安装:

npm install sm-crypto

2.代码中引入并使用它来实现加密解密的功能。

import * as CryptoSM4 from 'sm-crypto';

3.下面是前端加密代码

function stringToHex(str){
	let hex = Array.prototype.map.call(str, (c) => {
		return c.charCodeAt(0).toString(16);
	}).join("");
	return hex;
}

const pwdKey = stringToHex('abcdabcdabcdabcd') //密钥替换为后端密钥
 
function encryptedSM4(text) {
	const gmCryptConfigSet = {
		padding: pwdKey,
		mode: 'cbc',
		iv: pwdKey,
		output: 'string'
	};
	return CryptoSM4.sm4.encrypt(JSON.stringify(text), pwdKey, gmCryptConfigSet)
}

4.下面是前端解密代码

function stringToHex(str){
	let hex = Array.prototype.map.call(str, (c) => {
		return c.charCodeAt(0).toString(16);
	}).join("");
	return hex;
}

const pwdKey = stringToHex('abcdabcdabcdabcd') //密钥替换为后端密钥
 
function decryptedSM4(text) {
	const gmCryptConfigGet = {
		padding: pwdKey,
		mode: 'cbc',
		iv: pwdKey,
		output: 'string'
	};
	const originData = CryptoSM4.sm4.decrypt(text, pwdKey, 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('')
	// 将过滤后的字符码数组转换回字符串
	return JSON.parse(decryptData)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值