【发布时间】:2020-09-17 05:40:56
【问题描述】:
我面前的任务是获取用户提供的纯文本字符串(即密码),并将其转换为可以插入到 /etc/shadow 中的哈希密码字符串,以便用户可以登录使用最初提供的密码来生成哈希。这是我们在系统管理员世界中一遍又一遍地(重新)解决的一个非常常见的问题。有无数的命令行工具可以做到这一点。
然而,在这种特定情况下,我的限制是我需要一个可以在多个上下文中使用的纯 Go 解决方案(cli 工具、api 等)。我的第一次尝试只是使用bcrypt 库。乍一看,它似乎拥有我需要的属性。它是纯 Go,使用起来超级简单(奖励),它生成的输出看起来就像我所追求的那样……但它没有用。使用此库产生的输出不能(例如)粘贴到/etc/shadow 作为用户密码,然后用户可以使用原始密码成功登录。
我只是想知道是否有人在他们的日常工作中遇到过这种需求并解决了它,谁愿意分享他们的经验和 (gasp) 代码?我主要想知道是否有针对此近似用例的库有人会推荐? (我的 google fu 可能只有 'rona)。
【问题讨论】:
-
软件推荐与 StackOverflow 无关。但请尝试github.com/tredoe/osutil/tree/master/user/crypt,或谷歌“golang /etc/shadow”了解更多信息。或“/etc/shadow 格式”获取密码字段的详细信息。
-
对我来说似乎是话题,这是一个关于 SO 的编码问题。
-
加密类型取决于操作系统和版本。老系统用的是md5,早就坏掉了;永远不要使用这个。另见unix.stackexchange.com/questions/430141/…