#password #encryption #utility #plain-text #cargo-subcommand

bin+lib cargo-pwhide

pwhide 使用 crate 名称作为密钥来加密密码。这比纯文本稍微好一些。这是一个加密工具和一个用于运行时解密的库-

1 个不稳定版本

0.3.4 2023 年 8 月 25 日
0.3.3 2023 年 8 月 25 日

#2296密码学

MIT 许可证

14KB
171

cargo-pwhide

这个工具允许隐藏/混淆密码。它不提供任何安全性

遗憾的是,并非所有地方都提供秘密管理。特别是在内部工具中。缺乏秘密管理意味着密码必须以不安全的方式处理。

最糟糕的部分是将密码以纯文本形式提交到配置文件中的 git。稍微好一点的是,在服务器配置文件中有明文密码。

这个工具尝试让密码隐藏起来,让那些只是查看 git 内容的人难以破解密码,而无需花费时间尝试解密密码。

这种解决方案不提供任何真正的安全性。

这个解决方案包含两部分

  • cargo 子命令
  • 解密库

使用以下命令安装 cargo 子命令

cargo install cargo-pwhide

这允许使用以下命令加密/解密密码

cargo pwhide encrypt [密码] 或 cargo pwhide decrypt [密码}

这必须在包含有效 Cargo.toml 文件的目录中执行。加密和解密的密钥是 crate 名称。

每次加密运行都会提供不同的输出,因为选择了随机的 nonce。加密使用 Chacha20poly1305 和 base62 编码

库提供了一个解密函数

通过将以下内容添加到您的 Cargo.toml 中进行安装

cargo-pwhide = {version="*", feature=["lib"], default-features = false}

这仅包含所需的最小数量的依赖项。

使用它的最简单方法是使用简单的宏

use cargo_pwhide::pwdecrypt;
let clear_text=pwdecrypt!(encrypted_password);

pwdecrypt!(encrypted_password) -> String 扩展为
pwdecrypt(env!("CARGO_PKG_NAME"),encrypted_password) -> String

除了使用宏,还可以直接调用解密函数。

pwdecrypt (secret:Into,enrypted_data:Into) -> String

它应该使用 pwdecrypt(env!("CARGO_PKG_NAME"),encrypted_password) 调用

如果有人需要的话,以下增强将会被实现

  • 如果仅进行解密,则删除对 clap 等的依赖
  • 允许指定加密的密钥
  • 允许使用静态 nonce 以实现可重复的加密

依赖项

~1.4–2MB
~38K SLoC