# 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 密码管家
[](https://golang.org/)
[](https://fyne.io/)
[](LICENSE)
[](https://gitee.com/MM-Q/unicore.git)
[](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) - 高性能日志库
---
## 📊 项目统计




---
**如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!**
[](https://gitee.com/MM-Q/unicore)
**Made with ❤️ by [MM-Q](https://gitee.com/MM-Q)**
[返回顶部](#uni-core-密码管家)