1个不稳定版本
0.1.0 | 2024年4月10日 |
---|
#720 在 密码学
16KB
207 行
Lockit
Lockit 是一个小型命令行程序,用于使用强加密保护您的文件。
安装
$ cargo install lockit
用法
显示帮助。
$ lockit -h # Use --help for the long help message.
加密文件。
$ lockit -e secret.txt
解密文件。
$ lockit -d secret.txt
增加KDF的HMAC函数的哈希迭代次数。这增加了破解您密码的计算成本。解密文件时需要传递相同的迭代次数。
$ lockit -e -i 1000000 secret.txt
技术细节
默认情况下,Lockit 对您的密码应用 PBKDF2,迭代次数为 200,000 次 HMAC-SHA512,并使用随机 16 字节盐生成密钥,然后使用 AES-256 在 Galois/Counter 模式 (GCM) 中加密文件。此操作模式提供了机密性(即数据无法读取)和完整性(即数据不能被秘密篡改)。
免责声明
这是我作为一名Rust新手的作品,我将其分享在这里,作为其他人可能的资源和学习资源,并展示一些我新学到的Rust技能。
我最近刚刚读完 《Rust编程语言》,并正在寻找一个项目来帮助我在Rust中编写软件更加舒适,并利用可用的 crates。我尝试了许多自己动手做X教程,但发现我做了很多代码示例的复制粘贴,而没有真正自己思考。因此,我没有从设计Rust软件中获益。
我最终决定从这些跟随式教程中休息一下,尝试自己实现一些我认为有趣和有趣的东西。密码学是我主要兴趣之一,因此我选择编写一个文件加密/解密工具!
如果您想亲自尝试,那么这是我的建议:请不要阅读此存储库中的源代码。实现您自己的应用程序版本,一旦您对产品满意,您就可以自由地将我的代码与您所写的内容进行比较,同时记住,您的解决方案可能非常好。
以下是实现各个组件的大致顺序。
- 命令行选项/参数解析
- 从终端读取密码
- 将密码转换为密钥
- 将文件读入内存
- 将文件写入磁盘
- 数据加密
- 数据解密
在我的实现中(约300行代码),我使用了以下crate,但我鼓励你寻找替代方案。
crate | 描述 |
---|---|
anyhow | 改进的错误消息,带有可选上下文 |
clap | 命令行参数解析 |
ring | 密码学原语 |
rpassword | 从控制台读取密码 |
tempfile | 临时文件,有助于防止数据丢失 |
thiserror | 轻松创建自定义错误类型 |
zeroize | 安全地从内存中清除机密信息 |
寻找、评估和比较你可用于选择适合你用例的crate是非常重要的软件开发环节。阅读文档也同样重要,我希望你在尝试使用所选crate时能够获得大量实践。
依赖项
约8–17MB
约333K SLoC