问题
设置页面 → 安全 →「凭证加密」开关存在 UI,但无论打开还是关闭,data.json 中的凭证始终是加密的。
根因
前端开关只存在于 Zustand store 中,从未通过 IPC 传给后端:
src/renderer/src/stores/settingsStore.ts:109 — credentialEncryption: true 默认值
src/renderer/src/components/settings/SecuritySettings.tsx:34-35 — 开关 UI(checked={credentialEncryption} / onCheckedChange={setCredentialEncryption})
但后端 src/main/store/store.ts 的加密逻辑完全无视这个设置:
encryptData(data: string): string {
if (safeStorage.isEncryptionAvailable()) {
return Buffer.from(safeStorage.encryptString(data)).toString('base64')
}
return data // 不可用时返回原文
}
只看 safeStorage.isEncryptionAvailable(),不检查任何配置项。
缺失的链路
AppConfig 中没有 credentialEncryption 字段
- 没有 IPC handler 传递这个设置到 main process
encryptCredentials() 不检查配置
影响
- 用户以为关了加密就是明文存储,但 data.json 里的 credentials 字段仍然是 base64 密文
- 如果用户想在不支持 safeStorage 的环境间迁移 data.json,无法关闭加密
问题
设置页面 → 安全 →「凭证加密」开关存在 UI,但无论打开还是关闭,data.json 中的凭证始终是加密的。
根因
前端开关只存在于 Zustand store 中,从未通过 IPC 传给后端:
src/renderer/src/stores/settingsStore.ts:109—credentialEncryption: true默认值src/renderer/src/components/settings/SecuritySettings.tsx:34-35— 开关 UI(checked={credentialEncryption}/onCheckedChange={setCredentialEncryption})但后端
src/main/store/store.ts的加密逻辑完全无视这个设置:只看
safeStorage.isEncryptionAvailable(),不检查任何配置项。缺失的链路
AppConfig中没有credentialEncryption字段encryptCredentials()不检查配置影响