tle命令行完整参考:tlock时间锁加密/解密的10个参数一网打尽
2026/8/22 13:28:01 网站建设 项目流程

tle命令行完整参考:tlock时间锁加密/解密的10个参数一网打尽

【免费下载链接】tlockTimelock Encryption made practical. The Go `tlock` library and the `tle` cmd line tool home to encrypt towards the future.项目地址: https://gitcode.com/gh_mirrors/tl/tlock

tlock 是一个 Go 语言实现的**时间锁加密(Timelock Encryption)**库,配套的tle命令行工具让你可以把文件"加密到未来"——指定的时间点之前,任何人都无法解密。本文带你快速掌握 tle 的全部 10 个命令行参数,从时间锁加密到解密,一篇就够。

⏳ tlock 时间锁加密是什么?

传统加密靠密码,丢了密码就废了;而 tlock 把"时间"变成了钥匙:

  • 加密时指定一个未来时刻(比如 10 天后)
  • 解密依赖 drand 阈值网络按固定频率广播的"轮次"随机数
  • 网络还没走到那一轮时,解密会直接报错too early to decrypt

相关源码可参见 tlock.go 中的Encrypt/Decrypt核心 API。

🚀 30 秒安装 tle

纯 Go 编写、无需 CGO,两种方式任选:

# 方式一:直接安装最新版 go install github.com/drand/tlock/cmd/tle@latest
# 方式二:克隆源码本地构建 git clone https://gitcode.com/gh_mirrors/tl/tlock go build cmd/tle/tle.go

📋 tle 参数总览表

所有参数定义在 commands.go,支持短格式和长格式,也可通过TLE_前缀的环境变量设置(命令行优先):

#参数长格式作用适用操作
1-e--encrypt加密输入到输出(省略时默认)加密
2-d--decrypt解密输入到输出解密
3-D--duration指定多久后可解密,如10d加密
4-r--round指定具体轮次号,与-D互斥加密
5-f--force强制允许加密到过去的轮次加密
6-n--networkdrand API 端点,默认主网https://api.drand.sh/全部
7-c--chain使用的链(链名或链哈希),默认 quicknet全部
8-o--output结果写入的文件路径,默认输出到终端全部
9-a--armor输出 PEM(age 格式)编码的密文加密
10-m--metadata以 YAML 显示 drand 网络元数据独立

用法模板:

tle [--encrypt] (-r round | -D duration) [-a] [-o OUTPUT] [INPUT] tle --decrypt [-o OUTPUT] [INPUT] tle --metadata

⚙️ 逐参数详解

1️⃣-e/--encrypt:时间锁加密

加密是默认行为,通常可以省略。加密逻辑(含 PEM 封装与轮次校验)在 encrypt.go:

# 将 data.txt 加密,10 天后才能解密 tle -e -D 10d -o encrypted_file data.txt

2️⃣-d/--decrypt:时间锁解密

自 v1.3.0 起,解密会自动识别密文里记录的链哈希和网络,多数情况只需一个参数:

# 最简解密,结果打印到终端 tle -d encrypted_file # 指定输出文件(文件已存在会被覆盖) tle -d -o decrypted.txt encrypted_file

解密时不需要也不允许再带-D-r-a。未到时间会收到too early to decrypt提示。

3️⃣-D/--duration:指定解锁时长(最常用)

格式为"数字+单位",支持单位:s(秒)、m(分)、h(时)、d(天)、w(周)、M(月)、y(年),最小粒度为秒。解析规则见 encrypt.go:

# 30 分钟后解锁 tle -D 30m -o locked.txt data.txt # 一年后解锁 tle -D 1y -o timecapsule.tle secret.txt

4️⃣-r/--round:指定具体轮次

如果你已经算好了目标轮次号,可以直接指定。轮次到达前无法解密,且默认不能指向过去的轮次(除非加-f)。与-D二选一,同时使用会报错:

# 加密到第 123456 轮 tle -r 123456 -o encrypted_data data.txt

5️⃣-f/--force:强制加密到过去的轮次

正常情况下 tle 会拒绝加密到已过去的轮次。加-f可跳过该校验,方便复现或测试场景:

tle -r 100 -f -o past_data data.txt

6️⃣-n/--network:指定 drand 网络端点

默认使用主网https://api.drand.sh/(生产级、高可用)。测试也可使用 testnet 端点,如https://pl-us.testnet.drand.sh/。注意:测试网仅供测试,不要存放真实机密数据。

tle -n="https://pl-us.testnet.drand.sh/" -c="7672797f548f3f4748ac4bf3352fc6c6b6468c9ad40ad456a397545c6e2df5bf" -D 5s -o enc data.txt

7️⃣-c/--chain:指定链(链名或链哈希)

默认是主网 quicknet 链。建议直接写链哈希而非链名,可确保公钥完整性。当网络端点非默认而链哈希仍是默认值时,tle 会在终端提醒你可能需要同时指定-c(校验逻辑见 commands.go)。

# 使用 EU 中继 + quicknet 链哈希 tle -n="https://api2.drand.sh/" -c="52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" -D 10s -o enc data.txt

8️⃣-o/--output:指定输出文件

不指定时结果打印到标准输出(stdout);指定后写入该路径,同名文件会被覆盖。输入侧类似:不写输入文件时从 stdin 读取,也可用-表示标准输入。输入/输出的处理见 tle.go。

# 管道流式加密 cat data.txt | tle -D 1h -o one_hour.tle

9️⃣-a/--armor:输出 PEM 格式密文

将密文封装为可读的 age/PEM 编码格式(以----AGE-ENCRYPTED----开头),便于文本传输。解密 armored 文件时无需再加-a,会自动识别:

tle -a -D 20s -o encrypted_data.PEM data.txt

🔟-m/--metadata:查看网络元数据

独立操作,以 YAML 格式输出当前网络的链哈希、最新轮次、公钥和加密方案,适合连通性自检:

tle -m

🧪 一条命令体验完整流程

用测试网跑一个 5 秒解锁的完整示例(加密 → 等待 → 解密):

# 1. 加密:5 秒后可解密 tle -n="https://pl-us.testnet.drand.sh/" \ -c="7672797f548f3f4748ac4bf3352fc6c6b6468c9ad40ad456a397545c6e2df5bf" \ -D 5s -o encrypted_data data.txt # 2. 立刻解密会失败:too early to decrypt tle -d encrypted_data # 3. 5 秒后再解密即可成功 sleep 5 tle -d -o decrypted_data encrypted_data

💡 进阶技巧:叠加密码加密(混合加密)

推荐做法是在时间锁之外再套一层 age 口令加密,形成"口令 + 时间"双重保险(原理是把整段密文当作新数据再做一次时间锁加密):

# 加密:先口令加密,再时间锁 10 天 cat data.txt | age -p | tle -D 10d -o encrypted_data # 解密:先解开时间锁,再解口令 tle -d encrypted_data | age -d -o data.txt

同样的思路也可以叠加 PGP 或其他加密工具。

⚠️ 参数组合规则速查(避坑清单)

这些规则由 validateFlags 强制校验,测试用例见 flags_test.go:

  • -e-d-m三者有且只能出现一个
  • ✅ 加密必须提供-D-r其中之一,两者不能同时出现
  • -d解密时不能搭配-D-r-a
  • ✅ 指向过去轮次需加-f,否则报round N is in the past
  • ✅ 环境变量可用TLE_NETWORKTLE_CHAINTLE_DURATIONTLE_ROUNDTLE_OUTPUTTLE_ARMOR等,命令行参数优先级更高

📚 延伸阅读

资料说明
README.md官方说明:安装、用法、安全说明
cmd/tle/tle.go命令入口:输入/输出文件处理
cmd/tle/commands/commands.go10 个参数的定义与校验逻辑
cmd/tle/commands/encrypt.go时长解析与加密执行流程
tlock.goGo 库 API:Encrypt / Decrypt / Metadata
networks/http/与 drand 网络通信的实现

🔒 安全提示:正式用途请默认使用主网 quicknet 链;测试网(testnet)不安全,仅用于学习测试。更多安全细节可参考 SECURITY.md。

【免费下载链接】tlockTimelock Encryption made practical. The Go `tlock` library and the `tle` cmd line tool home to encrypt towards the future.项目地址: https://gitcode.com/gh_mirrors/tl/tlock

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询