【同步】前端项目源码

【修复】工作流兼容问题
This commit is contained in:
chudong
2025-05-10 11:53:11 +08:00
parent c514471adc
commit f1a75afaba
584 changed files with 55714 additions and 110 deletions

View File

@@ -0,0 +1,86 @@
/**
* 文件定义:加密解密
*/
// import JSEncrypt from 'jsencrypt'
/* -------------- 1、加密解密 -------------- */
/**
* 生成2048位RSA密钥对
* @returns {{ publicKey: string, privateKey: string }} 包含公钥和私钥的对象
*/
export const generateKeyPair = async () => {
const { JSEncrypt } = await import('jsencrypt')
const encrypt = new JSEncrypt({ default_key_size: '2048' })
encrypt.getKey()
return {
publicKey: encrypt.getPublicKey() as string,
privateKey: encrypt.getPrivateKey() as string,
}
}
/**
* RSA加密
* @param {string} str - 需要加密的字符串
* @param {string} publicKey - 公钥
* @returns {string} 加密后的字符串
*/
export const rsaEncrypt = async (str: string, publicKey: string): Promise<string> => {
const { JSEncrypt } = await import('jsencrypt')
// 基础验证
if (!str || !publicKey || publicKey.length < 10) return str
// 检查字符串长度2048位RSA密钥最大可加密245字节
const byteLength = new TextEncoder().encode(str).length
if (byteLength > 245) {
console.error('RSA加密失败: 数据长度超过245字节限制')
return str
}
try {
const encrypt = new JSEncrypt()
encrypt.setPublicKey(publicKey)
const encrypted = encrypt.encrypt(str)
// 确保加密结果有效
if (!encrypted) {
console.error('RSA加密失败')
return str
}
return encrypted
} catch (error) {
console.error('RSA加密出错:', error)
return str
}
}
/**
* RSA解密
* @param {string} str - 需要解密的字符串
* @param {string} privateKey - 私钥
* @returns {string} 解密后的字符串
*/
export const rsaDecrypt = async (str: string, privateKey: string): Promise<string> => {
const { JSEncrypt } = await import('jsencrypt')
// 基础验证
if (!str || !privateKey || privateKey.length < 10) return str
try {
const decrypt = new JSEncrypt()
decrypt.setPrivateKey(privateKey)
const decrypted = decrypt.decrypt(str)
// 确保解密结果有效
if (!decrypted) {
console.error('RSA解密失败')
return str
}
return decrypted
} catch (error) {
console.error('RSA解密出错:', error)
return str
}
}