1 个不稳定版本

0.8.0 2019年11月4日

#2219 in 加密学

MIT 许可证

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.

安装

下载二进制文件

请参阅 发布 部分。

从源码安装

  1. 安装 Rust:https://www.rust-lang.net.cn/tools/install
  2. cargo安装 rypt

为什么不使用现有的工具?

  • PGP:安装体积大;笨拙 (--symmetric?);旧算法(AES128 在 CFB 模式下);慢(待定:数字);没有适当的密码推导,没有完整的文件认证。
  • OpenSSL:太低级;待定。
  • Keybase:没有基于密码的加密,依赖于在商业服务中有账户;待定。
  • 归档程序如 zip、7z、winrar:算法过时,不友好;没有公钥加密;待定。

依赖项

~24MB
~232K SLoC