本说明适用于支持 .rta 备份的 1.0.1 及后续版本。当前 Android 下载包已包含备份与恢复功能。
没有安装应用,也能读取备份
- 保存 HTML 文件,断开网络后,用新版浏览器打开。
- 选择 .rta 文件,输入导出该文件时使用的本机解锁密码。后来修改密码,不会改变旧备份。
- 查看账户和 OTP 参数。密钥默认隐藏,点击“查看密钥”才显示;可按密钥和参数,在支持相应协议的其他认证器中手动重新绑定。
- 工具不会生成验证码、推进 HOTP 计数或写入账户库;切到后台或关闭页面会清空显示内容,不提供明文文件导出。
忘记备份密码时,工具或其他应用都无法代为找回。能解密读取不等于所有服务都能登录,核对新设备前请保留原认证器。
v1 加密封装
文件为单行 UTF-8,仅含 ASCII,不带 BOM、换行或前后空格:
rowstop-backup-v1:310000:<salt-hex>:<iv-hex>:<ciphertext-and-tag-hex>
- salt:16 字节系统随机盐,编码为 32 个小写十六进制字符。
- IV:12 字节系统随机数,编码为 24 个小写十六进制字符。
- 密码按原样 UTF-8 编码,不 trim 或做 Unicode 归一化;接受 6–256 个 UTF-16 code units。使用 PBKDF2-HMAC-SHA256、310000 次迭代,派生 32 字节密钥。
- 使用 AES-256-GCM,密文后拼接 128 位认证标签,AAD 为下方字符串的 UTF-8 字节。认证通过后才能解析 JSON。
rowstop:backup:v1:pbkdf2-sha256:310000
文件最大 2,097,300 字节;解密后的 UTF-8 内容最大 1,048,576 字节。未知版本、篡改、无效字段或不支持的参数整批拒绝。
账户载荷
{ "version": 1, "accounts": [ ... ] }
| 字段 | 含义 |
|---|---|
| id | 非空且唯一,最长 256 字符;应用合并导入后重新生成本机 ID。 |
| type | totp 或 hotp |
| issuer / label | 服务 / 账户名称,最长各 256 字符;label 不能为空白,不允许冒号和 C0 / DEL 控制字符。 |
| alias / group | 可选别名 / 单一分组,最长各 256 字符,不允许 C0 / DEL 控制字符。缺省、null 或空白表示无别名 / 未分组;新版读取时去除首尾空白。旧版应用可能忽略这两个字段。 |
| secret | 经校验的规范大写 Base32 密钥。 |
| algorithm | SHA1、SHA256 或 SHA512 |
| digits | 6 或 8 |
| period | 1–86400 的整数秒数 |
| counter | 0–9007199254740991 的安全整数。HOTP 须保留当前计数;读取不递增。 |
恢复与迁出规则
文件不包含解锁密码、设备加密密钥、生物凭据、系统权限或置顶偏好。应用先预览再确认合并,重复密令沿用本机名称、别名、分组和 HOTP 计数,新账户保留备份参数。.rta 不是 2FAS 或 Aegis 文件,不能通过修改扩展名让其他应用直接识别。
手动重新绑定时,除密钥外,还需核对类型、算法、位数、周期或计数;能否使用取决于目标应用和服务的支持范围。TOTP 依赖设备时间;HOTP 备份可能落后于服务端计数,需要在原服务核对。
需要帮助时,联系 rowstop@yeah.net,提供版本、设备和复现步骤;不要发送密码、密钥、备份、迁移二维码或验证码。