1 个不稳定版本
0.1.0 | 2019年1月27日 |
---|
#16 在 #random-key
8.5MB
4K SLoC
关于Cryptobox
Cryptobox是一个KISS数据加密/解密工具,生成一个随机的256位密钥并将其以十六进制形式打印到StdErr,使用libsodium的crypto_secretbox_xchacha20poly1305_easy
使用此随机密钥密封来自StdIn的所有内容,并将密封的数据写入StdOut。
目标是使代码尽可能简单,以便于理解和验证(这也是我们为什么使用libsodium作为后端的原因)。
可选地,Cryptobox可以使用ma_proper
作为内存分配器,以确保在将其返回给操作系统之前覆盖分配的内存(特性use-maproper
;默认禁用)。
用例
用例相当有限 - 特别是,Cryptobox并不适合
- 大文件:Cryptobox会从StdIn读取整个输入并将其写入一个不同的内存位置 - 这意味着Cryptobox至少需要两倍的输入大小的内存
- 任何基于密码的加密:Cryptobox为每次加密使用一个新的随机密钥并显示原始十六进制密钥 - 您需要将其存储在一个安全的地方
相反,用例是用于备份的小型敏感数据的长期安全加密。例如,您可以加密您的GnuPG密钥环并将其上传到Pastebin.com - 这样您只需要在安全的地方存储64个十六进制字符,而不是整个密钥环。
加密
要密封一些数据,将其通过cryptobox
的StdIn管道,并将StdOut重定向到目标位置
cryptobox < /path/to/secret.file > /path/to/sealed.file
重要:将显示的密钥存储在安全的地方!没有这个密钥,可能根本无法从密封的文件中恢复数据。
解密
要解密一些数据,将密钥作为环境变量导出,将其通过cryptobox
的StdIn管道,并将StdOut重定向到目标位置
export CRYPTOBOX_KEY=0197ac79-e307baf7-facd0c5c-9b1b3951-990d7dd5-4cffc259-fd6ac95c-2f3b1a1c
cryptobox < /path/to/sealed.file > /path/to/secret.file
(Cryptobox会自动检测您导出的密钥并切换到解密模式 - 要从环境变量中删除密钥,请使用unset CRYPTOBOX_KEY
)