1 个不稳定版本
0.8.0 | 2019年11月4日 |
---|
#2219 in 加密学
185KB
4K SLoC
Rypt:多功能命令行加密工具
- 使用密码、公钥/私钥对以及这些组合的复杂组合加密/解密文件和流。
- 使用由 libsodium 提供的现代加密原语。
- 使用 Rust 编写,这是一个高效且内存安全的编程语言。
- 100% 认证加密:任何对加密文件的更改都会使它们无效。
- 离线、独立工具,不依赖于任何商业服务/云。
- 支持高级用例,如多个密码/公钥、密钥阈值方案 等。
- 快速。在 2013 年 MacBook 上使用 AES256-GCM 算法,速度约为 1.1 Gb/s。通常 I/O 带宽是限制因素。
- 易于使用,适用于初学者和高级用户(见下文示例)。
- 轻量级:二进制大小约为 1 Mb;使用的内存小于 10 Mb(除密码推导函数所需的内存外)。
- 操作系统支持:x86 Linux、MacOS、Windows。
- 开源,MIT 许可证。
示例
$ # Basic use case: encrypt/decrypt file with a password
$ rypt secret-interview.mp4
Enter password:
Confirm password:
secret-interview.mp4 -> secret-interview.mp4.rypt (1/1)
100.0 % 1.46 GiB 310.18 MiB/s ETA 0:00s
Remove original file(s)? [y/N]: y
$ rypt -d secret-interview.mp4.rypt
Enter password:
secret-interview.mp4.rypt -> secret-interview.mp4 (1/1)
100.0 % 1.46 GiB 320.48 MiB/s ETA 0:00s
Remove original file(s)? [y/N]: y
$ # Advanced examples: generate public/private key pair
$ rypt -g recipient-key
Keypair 1/1:
Public key: 8bF9648A4C7705E3276795901819Dfe734fa62Df587CF7dB27a17D6FD0d5012c
Public key file: recipient-key.pub
Private key file: recipient-key
$ # Upload a public-key-encrypted compressed archive to S3
$ tar c . | xz | rypt --public-key recipient-key.pub | aws s3 cp - s3://mybucket/archive.xz.rypt
$ # Then download it, decrypt and unpack
$ aws s3 cp s3://mybucket/archive.xz.rypt - | rypt -d --private-key recipient-key | xz -d | tar x
$ # More advanced examples: encrypt a note from stdin using an any-2-out-of-3 passwords threshold scheme
$ rypt -p -p -p --key-threshold 2 > encrypted.rypt
Enter password:
Confirm password:
Enter password:
Confirm password:
Enter password:
Confirm password:
(stdin) -> (stdout) (1/1)
This is a secret message.
^D
$ ./rypt -d -p -p -s encrypted.rypt
Enter password:
Enter password:
encrypted.rypt -> (stdout) (1/1)
This is a secret message.
安装
下载二进制文件
请参阅 发布 部分。
从源码安装
- 安装 Rust:https://www.rust-lang.net.cn/tools/install
cargo安装 rypt
为什么不使用现有的工具?
- PGP:安装体积大;笨拙 (--symmetric?);旧算法(AES128 在 CFB 模式下);慢(待定:数字);没有适当的密码推导,没有完整的文件认证。
- OpenSSL:太低级;待定。
- Keybase:没有基于密码的加密,依赖于在商业服务中有账户;待定。
- 归档程序如 zip、7z、winrar:算法过时,不友好;没有公钥加密;待定。
依赖项
~24MB
~232K SLoC