# totp **Repository Path**: wx12516/totp ## Basic Information - **Project Name**: totp - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # totp 基于 RSA 加密的 TOTP 密钥安全存储与验证码生成命令行工具。 ## 特性 - RSA 2048-bit 加密存储 TOTP Secret,密文落盘 - TOTP 码实时生成,支持 SHA1/SHA256/SHA512 - 交互式仪表盘,自动刷新验证码与倒计时 - 批量导入/导出,支持文件和标准输入 - 剪贴板复制(macOS/Linux/Wayland) - 别名 Tab 补全 - 中文友好,终端列宽自适应 ## 安装 ```bash go build -o totp . ``` ## 使用 ### 初始化 ```bash totp init ``` 数据存储在 `~/.totp/store.db`,数据库权限 0600。 ### 添加条目 ```bash totp add ``` 交互式录入:别名、Secret(不回显)、位数、步长、算法、发行方、账户名。重复别名可覆盖。 ### 实时仪表盘 ```bash totp ``` 显示所有条目的实时 TOTP 码和剩余秒数,每秒刷新,`Ctrl+C` 退出。 ### 查看单个条目 ```bash totp show totp show -c # 复制到剪贴板 ``` ### 列出所有条目 ```bash totp list ``` ### 删除条目 ```bash totp delete ``` ### 批量导入 ```bash totp import -f /path/to/otp_list.txt totp import -f /path/to/otp_list.txt --overwrite # 覆盖重复别名 totp import -f - # 从标准输入读取 ``` 文件格式(`:` 分隔): ``` alias:secret[:digits:period:algorithm[:issuer:account]] ``` | 字段 | 位置 | 必填 | 默认值 | 说明 | | --------- | ---- | ---- | ------ | -------------------------- | | alias | 1 | 是 | - | 别名 | | secret | 2 | 是 | - | Base32 编码的 TOTP 密钥 | | digits | 3 | 否 | 6 | TOTP 位数(6 或 8) | | period | 4 | 否 | 30 | 时间步长(秒) | | algorithm | 5 | 否 | SHA1 | 哈希算法(SHA1/SHA256/SHA512) | | issuer | 6 | 否 | 空 | 发行方 | | account | 7 | 否 | 空 | 账户名 | `#` 开头为注释,空行跳过。 示例: ``` # 简单格式 github:JBSWY3DPEHPK3PXP vpn:HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ # 完整格式 gitlab:K5QXY3LNMFUW4ZDB:6:30:SHA1:GitLab:user@example.com ``` ### 导出元数据 ```bash totp export # 表格输出(不含 Secret) totp export --json # JSON 输出 ``` ## 项目结构 ``` . ├── main.go # 入口 ├── cmd/ # 命令定义 │ ├── root.go # 根命令 & 仪表盘 │ ├── init.go # totp init │ ├── add.go # totp add │ ├── show.go # totp show │ ├── list.go # totp list │ ├── delete.go # totp delete │ ├── import.go # totp import │ └── export.go # totp export ├── internal/ │ ├── crypto/rsa.go # RSA 加解密(内置密钥) │ ├── db/sqlite.go # SQLite 存储层 │ ├── model/otp.go # 数据模型 │ ├── service/ │ │ ├── otp_service.go # TOTP 业务逻辑 │ │ └── import_service.go # 批量导入逻辑 │ └── totp/totp.go # TOTP 算法实现 └── go.mod ``` ## 依赖 - [cobra](https://github.com/spf13/cobra) - 命令行框架 - [go-sqlite3](https://github.com/mattn/go-sqlite3) - SQLite 驱动 - [golang.org/x/term](https://pkg.go.dev/golang.org/x/term) - 终端密码输入 ## 安全说明 - TOTP Secret 使用内置 RSA 2048-bit 公钥加密后存入 SQLite,数据库文件权限 0600 - 私钥内嵌于二进制中,提供的是存储层加密而非防逆向保护,适合防止密钥明文落盘 - 导入完成后建议删除明文文件