57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
// 简单的密码加密/解密工具(Base64编码 + 简单混淆)
|
||
// 注意:这不是强加密,只是防止密码明文存储
|
||
|
||
const SECRET_KEY = 'QIANGBAO_AI_JIZHANG_2024' // 密钥
|
||
|
||
/**
|
||
* 加密密码
|
||
* @param {string} password - 原始密码
|
||
* @returns {string} - 加密后的密码
|
||
*/
|
||
export function encryptPassword(password) {
|
||
if (!password) return ''
|
||
|
||
try {
|
||
// 1. 将密码转为字符数组
|
||
const chars = password.split('')
|
||
|
||
// 2. 与密钥进行简单的XOR混淆
|
||
const encrypted = chars.map((char, index) => {
|
||
const keyChar = SECRET_KEY[index % SECRET_KEY.length]
|
||
return String.fromCharCode(char.charCodeAt(0) ^ keyChar.charCodeAt(0))
|
||
}).join('')
|
||
|
||
// 3. Base64编码
|
||
return btoa(unescape(encodeURIComponent(encrypted)))
|
||
} catch (error) {
|
||
console.error('密码加密失败:', error)
|
||
return password // 失败时返回原密码
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 解密密码
|
||
* @param {string} encryptedPassword - 加密的密码
|
||
* @returns {string} - 解密后的密码
|
||
*/
|
||
export function decryptPassword(encryptedPassword) {
|
||
if (!encryptedPassword) return ''
|
||
|
||
try {
|
||
// 1. Base64解码
|
||
const decoded = decodeURIComponent(escape(atob(encryptedPassword)))
|
||
|
||
// 2. 与密钥进行XOR反混淆
|
||
const chars = decoded.split('')
|
||
const decrypted = chars.map((char, index) => {
|
||
const keyChar = SECRET_KEY[index % SECRET_KEY.length]
|
||
return String.fromCharCode(char.charCodeAt(0) ^ keyChar.charCodeAt(0))
|
||
}).join('')
|
||
|
||
return decrypted
|
||
} catch (error) {
|
||
console.error('密码解密失败:', error)
|
||
return '' // 失败时返回空字符串
|
||
}
|
||
}
|