创建CLI:我应该如何处理配置文件中的密码(以及如何)?

时间:2015-10-17 06:43:52

标签: encryption go command-line-interface

我正在使用Go编写CLI,我想将密码保存到保存在用户主目录中的配置文件中。

我是否应该在保存时加密密码并在将密码发送到服务器时解密,CLI与之交互?

如果是这样,go库中有一个很好的内置库吗?我希望尽可能简单,不使用任何额外的外包装。我看到的所有答案都非常复杂。

应该是这样的:

func Encrypt(password string) string
func Decrypt(password string) string

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

免责声明:核心库不提供开箱即用的功能。 Go 的第三方库(来自 Docker)可以提供帮助。

现代操作系统提供工具和 API 以安全的方式存储机密。

  • 苹果:钥匙扣
  • Linux:特勤局
  • Windows:凭据管理器 API

Git 和 Docker 使用这些工具来存储您的凭据。

为 Docker Engine v1.11 贡献 Docker credential helpers 的 David Calavera 在 2016 年撰写了一篇题为 Stop saving credential tokens in text files 的文章。该文章描述了该问题、Linux 的一个简单实现并展示了如何使用该库。< /p>

execl

Docker credential helper 的缺点是它希望你安装它的二进制文件并且需要 CGo。 我特别添加了 Docker 解决方案,因为它在评论中被提及,但 有类似的库