# unicore **Repository Path**: MM-Q/unicore ## Basic Information - **Project Name**: unicore - **Description**: 一款基于 Go 语言和 Fyne 框架开发的跨平台密码管理工具 - **Primary Language**: Go - **License**: GPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-12 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 密码管理 ## README
# Uni-Core 密码管家 [![Go Version](https://img.shields.io/badge/Go-1.25.0+-00ADD8?style=flat&logo=go)](https://golang.org/) [![Fyne Version](https://img.shields.io/badge/Fyne-v2.7.3-00A5E5?style=flat&logo=go)](https://fyne.io/) [![License](https://img.shields.io/badge/License-GPLv2-blue.svg)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey)](https://gitee.com/MM-Q/unicore.git) [![Build Status](https://img.shields.io/badge/Build-Passing-brightgreen)](https://gitee.com/MM-Q/unicore.git) **一款基于 Go 语言和 Fyne 框架开发的跨平台密码管理工具** [快速开始](#快速开始) • [功能特性](#核心特性) • [安装指南](#安装指南) • [使用文档](#使用文档) • [贡献指南](#贡献指南)
--- ## 📋 项目简介 Uni-Core 是一款功能强大、安全可靠的跨平台密码管理工具,采用 Go 语言开发,使用 Fyne 框架构建现代化的图形用户界面。项目旨在为用户提供简单、高效的密码存储和管理解决方案,支持本地 SQLite 数据库存储,确保数据安全性和隐私保护。 ### 🎯 设计理念 - **安全性优先**:密码采用加密存储,保护用户隐私 - **简洁易用**:直观的用户界面,无需复杂配置 - **跨平台支持**:支持 Windows、Linux、macOS 三大主流操作系统 - **开源免费**:基于 GPLv2 协议,完全开源,可自由使用和修改 --- ## ✨ 核心特性 ### 🔐 密码管理 - ✅ **添加密码**:支持标题、用户名、密码、URL、备注等完整信息 - ✅ **编辑密码**:快速修改已有密码记录 - ✅ **删除密码**:安全删除不需要的密码记录 - ✅ **密码加密**:自动加密存储,保护数据安全 - ✅ **显示切换**:一键切换密码明文/密文显示 ### 🔍 搜索功能 - ✅ **智能搜索**:支持标题、用户名、描述的模糊搜索 - ✅ **实时搜索**:输入即时过滤,快速定位目标密码 - ✅ **去重处理**:自动去除重复搜索结果 ### 📋 复制功能 - ✅ **复制整行**:一键复制完整的密码记录 - ✅ **复制密码**:快速复制密码到剪贴板 - ✅ **复制用户名**:便捷复制用户名 - ✅ **复制URL**:直接复制网站链接 ### 📥📤 数据导入导出 - ✅ **CSV 导出**:支持加密/明文两种模式导出 - ✅ **CSV 导入**:智能识别加密数据,自动导入 - ✅ **JSON 导出**:支持加密/明文两种模式导出 - ✅ **JSON 导入**:支持 JSON 格式数据导入 - ✅ **数据统计**:查看密码记录总数 - ✅ **数据清空**:一键清空所有密码记录 ### 🎨 用户界面 - ✅ **标签页设计**:密码管理、数据管理、项目信息分页展示 - ✅ **表格视图**:清晰的表格布局,支持自定义列宽 - ✅ **加载动画**:友好的加载提示,提升用户体验 - ✅ **对话框提示**:完善的确认、错误、成功提示 ### 🛠️ 技术特性 - ✅ **SQLite 数据库**:轻量级本地数据库,无需服务器 - ✅ **索引优化**:完善的数据库索引,查询性能优秀 - ✅ **自动时间戳**:自动记录创建和更新时间 - ✅ **日志系统**:完善的日志记录,便于问题排查 - ✅ **跨平台构建**:支持批量构建多个平台版本 --- ## 📦 安装指南 ### 前置要求 | 组件 | 最低版本 | 推荐版本 | 说明 | |------|---------|---------|------| | Go | 1.20+ | 1.25.0+ | Go 编程语言环境 | | Python | 3.8+ | 3.10+ | 用于运行构建脚本 | | Git | 2.0+ | 最新版 | 用于克隆代码仓库 | ### 从源码安装 #### 1. 克隆仓库 ```bash git clone https://gitee.com/MM-Q/unicore.git cd unicore ``` #### 2. 安装依赖 ```bash go mod download ``` #### 3. 运行应用 ```bash go run main.go ``` ### 使用构建脚本 #### 快速构建(当前平台) ```bash python build.py ``` #### 批量构建(所有支持的平台) ```bash python build.py --batch ``` #### 自定义构建参数 ```bash # 指定输出文件名 python build.py -o my-password-manager # 指定入口文件 python build.py -e ./main.go # 指定目标平台 python build.py -p windows # 指定目标架构 python build.py -a amd64 # 组合使用 python build.py -o uni-core -p windows -a amd64 ``` ### Windows 打包 ```bash python package.py ``` 打包后的可执行文件将输出到 `output/` 目录。 ### 下载预编译版本 访问 [Gitee Releases](https://gitee.com/MM-Q/unicore/releases) 下载对应平台的预编译版本。 --- ## 🚀 快速开始 ### 首次运行 1. **启动应用**:双击运行可执行文件或使用 `go run main.go` 2. **查看界面**:应用会自动创建数据库文件 `data/uni-core.db3` 3. **添加密码**:点击"添加"按钮,填写密码信息 4. **管理密码**:使用搜索、编辑、删除等功能管理密码 ### 基础用法示例 #### 添加密码 ``` 1. 点击"添加"按钮 2. 填写表单: - 标题:Google 账号(必填) - 用户名:your.email@gmail.com(必填) - 密码:your_password(必填) - URL:https://accounts.google.com(可选) - 备注:主要邮箱账号(可选) 3. 点击"确定"保存 ``` #### 搜索密码 ``` 1. 在搜索框输入关键词(如 "Google") 2. 点击"搜索"按钮或按回车键 3. 查看搜索结果 4. 清空搜索框可显示所有密码 ``` #### 复制密码 ``` 1. 在表格中选中目标密码行 2. 点击"复制密码"按钮 3. 密码已复制到剪贴板 4. 粘贴到需要的位置 ``` ### 高级用法示例 #### 导出加密数据 ``` 1. 切换到"数据管理"标签页 2. 点击"导出CSV"按钮 3. 选择"加密"选项 4. 选择保存位置和文件名 5. 点击"保存" ``` #### 导入数据 ``` 1. 切换到"数据管理"标签页 2. 点击"导入CSV"按钮 3. 选择要导入的 CSV 文件 4. 系统自动识别加密数据 5. 导入完成后显示导入数量 ``` #### 批量构建所有平台 ```bash # 构建所有支持的平台和架构组合 python build.py --batch --max-workers 4 --timeout 1800 # 构建输出示例: # 总任务数: 3 # 已完成 1/3 个任务 (成功 1 个,失败 0 个,跳过 0 个) # 已完成 2/3 个任务 (成功 2 个,失败 0 个,跳过 0 个) # 已完成 3/3 个任务 (成功 3 个,失败 0 个,跳过 0 个) # 批量构建完成,成功 3 个,失败 0 个,跳过 0 个 ``` --- ## 📚 API 文档概述 ### 核心数据结构 #### PswdData - 密码数据结构 ```go type PswdData struct { ID int `db:"id"` // 主键ID Title string `db:"title"` // 标题 Username string `db:"username"` // 用户名 Password string `db:"password"` // 密码(Base64编码) Link string `db:"link"` // 链接 Description string `db:"description"` // 描述 CreatedAt time.Time `db:"created_at"` // 创建时间 UpdatedAt time.Time `db:"updated_at"` // 更新时间 } ``` ### 核心函数 #### 应用初始化 ```go // 运行应用程序 func Run() // 初始化应用(日志、数据库) func appInit() (*fastlog.FLog, *sqlx.DB, error) // 初始化UI(窗口、标签页) func appInitUi(db *sqlx.DB, log *fastlog.FLog) fyne.Window ``` #### 数据操作 ```go // 查询所有密码数据 func queryPswdData(db *sqlx.DB, log *fastlog.FLog) // 搜索密码数据 func searchData(db *sqlx.DB, w fyne.Window, e *widget.Entry, l *fastlog.FLog, tab *widget.Table) // 更新表格数据 func updateTableData(table *widget.Table, data []globals.PswdData) ``` #### 加密解密 ```go // Base64 编码(添加前缀) func EncodeBase64(text string) string // Base64 解码(去除前缀) func DecodeBase64(encoded string) (string, error) ``` #### 数据导入导出 ```go // 导出为 CSV func ExportToCSV(data globals.PswdDatas, writer io.Writer, decrypt bool) error // 从 CSV 导入 func ImportFromCSVPwsdData(filePath string, db *sqlx.DB, count *int) error // 导出为 JSON func ExportToJSON(data globals.PswdDatas, writer io.Writer, decrypt bool) error // 从 JSON 导入 func ImportFromJSONPwsdData(filePath string, db *sqlx.DB, count *int) error ``` --- ## 🎯 支持的功能和格式 ### 数据格式支持 | 格式 | 导入 | 导出 | 加密支持 | 说明 | |------|------|------|---------|------| | **CSV** | ✅ | ✅ | ✅ | 逗号分隔值,通用性强 | | **JSON** | ✅ | ✅ | ✅ | 结构化数据,易于处理 | ### 加密方式 | 方式 | 算法 | 用途 | 安全级别 | |------|------|------|---------| | **Base64** | Base64 编码 | 数据混淆 | ⚠️ 低(建议升级为 AES-256) | ### 平台支持 | 平台 | 架构 | 状态 | 备注 | |------|------|------|------| | **Windows** | amd64 | ✅ 完全支持 | 推荐 | | **Linux** | amd64 | ✅ 完全支持 | 推荐 | | **macOS** | amd64 | ✅ 完全支持 | 推荐 | ### 数据库支持 | 数据库 | 版本 | 用途 | 特性 | |--------|------|------|------| | **SQLite3** | v1.14.28 | 本地数据存储 | 轻量级、无需服务器、跨平台 | --- ## 📁 项目结构 ``` unicore/ ├── main.go # 应用程序入口 ├── go.mod # Go 模块依赖定义 ├── go.sum # Go 模块依赖校验和 ├── build.py # 跨平台构建脚本 ├── package.py # Windows 打包脚本 ├── LICENSE # GPL v2 许可证 ├── .gitignore # Git 忽略文件配置 │ ├── app/ # 应用核心逻辑目录 │ ├── app.go # 主应用运行逻辑 │ ├── app_init.go # 应用初始化(数据库、日志) │ ├── app_ui.go # UI 初始化(窗口、标签页) │ ├── app_passwd_ui.go # 密码管理 UI(核心业务) │ ├── app_data_manage_ui.go # 数据管理 UI(导入导出) │ └── app_project_info_ui.go # 项目信息 UI │ ├── globals/ # 全局变量和常量目录 │ ├── globals.go # 全局定义(结构体、常量) │ ├── sql/ │ │ └── init.sql # 数据库初始化脚本 │ └── uni-core.png # 应用图标(嵌入资源) │ ├── pkg/ # 工具包目录 │ ├── cryptokey/ # 加密解密工具 │ │ └── cryptokey.go │ ├── pathchecker/ # 路径检查工具 │ │ └── pathchecker.go │ └── tools/ # 通用工具(导入导出) │ └── tools.go │ ├── data/ # 数据目录(自动创建) │ └── uni-core.db3 # SQLite 数据库文件 │ ├── logs/ # 日志目录(自动创建) │ └── app.log # 应用日志文件 │ └── output/ # 构建输出目录(自动创建) └── uni-core.exe # 构建的可执行文件 ``` ### 目录说明 | 目录 | 用途 | 是否自动创建 | |------|------|-----------| | `app/` | 应用核心逻辑 | ❌ | | `globals/` | 全局配置和资源 | ❌ | | `pkg/` | 工具包 | ❌ | | `data/` | 数据库文件 | ✅ | | `logs/` | 日志文件 | ✅ | | `output/` | 构建输出 | ✅ | | `vendor/` | 依赖包(可选) | ❌ | --- ## 🧪 测试说明 ### 运行测试 ```bash # 运行所有测试 go test ./... # 运行指定包的测试 go test ./pkg/cryptokey # 运行测试并显示覆盖率 go test -cover ./... # 运行测试并生成覆盖率报告 go test -coverprofile=coverage.out ./... go tool cover -html=coverage.out ``` ### 代码检查 ```bash # 格式化代码 go fmt ./... # 静态检查 go vet ./... # 代码审查 golangci-lint run ``` ### 构建检查 ```bash # 构建前检查 python build.py --check-only # 构建并验证 python build.py && ./output/uni-core.exe ``` --- ## 📄 许可证 本项目采用 **GNU General Public License v2.0** 许可证。 ### 许可证摘要 - ✅ 商业使用 - ✅ 修改 - ✅ 分发 - ✅ 私人使用 - ⚠️ 专利使用 - ❌ 责任限制 - ❌ 担保 详细内容请参阅 [LICENSE](LICENSE) 文件。 --- ## 🤝 贡献指南 我们欢迎所有形式的贡献! ### 如何贡献 1. **Fork 本仓库** ```bash # 在 Gitee 上点击 Fork 按钮 ``` 2. **克隆你的 Fork** ```bash git clone https://gitee.com/你的用户名/unicore.git cd unicore ``` 3. **创建特性分支** ```bash git checkout -b feature/你的特性名称 ``` 4. **提交更改** ```bash git add . git commit -m "添加你的功能描述" ``` 5. **推送到分支** ```bash git push origin feature/你的特性名称 ``` 6. **提交 Pull Request** - 在 Gitee 上创建 Pull Request - 描述你的更改和动机 - 等待代码审查 ### 贡献类型 - 🐛 **Bug 修复**:修复已知问题 - ✨ **新功能**:添加新特性 - 📝 **文档改进**:完善文档 - 🎨 **代码重构**:优化代码结构 - ⚡ **性能优化**:提升应用性能 - ✅ **测试**:添加或改进测试 ### 代码规范 - 遵循 Go 语言代码规范 - 使用 `gofmt` 格式化代码 - 添加适当的注释 - 编写单元测试 - 更新相关文档 --- ## 📞 联系方式 ### 项目信息 | 项目 | 链接 | |------|------| | **项目仓库** | [https://gitee.com/MM-Q/unicore.git](https://gitee.com/MM-Q/unicore.git) | | **问题反馈** | [Issues](https://gitee.com/MM-Q/unicore/issues) | | **Pull Request** | [Pull Requests](https://gitee.com/MM-Q/unicore/pulls) | ### 技术支持 - 📧 **Email**:[待补充] - 💬 **讨论区**:[待补充] - 📖 **文档**:[待补充] ### 相关资源 | 资源 | 链接 | |------|------| | **Go 语言** | [https://golang.org/](https://golang.org/) | | **Fyne 框架** | [https://fyne.io/](https://fyne.io/) | | **SQLite** | [https://www.sqlite.org/](https://www.sqlite.org/) | | **sqlx** | [https://github.com/jmoiron/sqlx](https://github.com/jmoiron/sqlx) | --- ## 🙏 致谢 感谢以下开源项目: - [Fyne](https://fyne.io/) - 跨平台 GUI 框架 - [SQLite](https://www.sqlite.org/) - 轻量级数据库 - [sqlx](https://github.com/jmoiron/sqlx) - Go 数据库扩展库 - [fastlog](https://gitee.com/MM-Q/fastlog) - 高性能日志库 --- ## 📊 项目统计
![代码行数](https://img.shields.io/badge/代码行数-~1870-brightgreen) ![文件数量](https://img.shields.io/badge/文件数量-17-blue) ![Go 文件](https://img.shields.io/badge/Go-文件-13-orange) ![Python 文件](https://img.shields.io/badge/Python-文件-2-yellow)
---
**如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!** [![Star History Chart](https://api.star-history.com/svg?repos=MM-Q/unicore&type=Date)](https://gitee.com/MM-Q/unicore) **Made with ❤️ by [MM-Q](https://gitee.com/MM-Q)** [返回顶部](#uni-core-密码管家)