- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取明文密码并将其散列以与存储在 FreeBSD 的/etc/master.passwd 中的密码散列进行比较。我的目标是让 node.js 程序能够使用现有帐户凭据对 master.passwd 数据库进行身份验证。
我已经建立了一个名为 test1 的 FreeBSD 帐户。我给了它一个密码“password”。查看 master.password,我在密码字段中看到了这个:
$6$nEIifU2XZ9VDx3l5$RUW0Udy60Hon9OsoTAz8DcH0uvZ4E3p5CXFScrC694EF1Cpkf8/5GUtC750NZXnMFYZsMlBZE52INFlBUvWMb0
我的理解是 $ 字符充当三个字段的分隔符:
我尝试在 Node.js 中复制哈希算法,如下所示:
const crypto = require("crypto");
let passwordPlain = "password"
let salt64 = "nEIifU2XZ9VDx3l5"
let salt = Buffer.from(salt64, "base64");
let passwordHashed = crypto.scryptSync(salt, passwordPlain, 64);
let passwordHashed64 = passwordHashed.toString('base64');
console.log(`$6$${salt64}$${passwordHashed64}`);
我本希望看到我的纯文本密码“password”用盐散列并显示以匹配 master.password 中的内容。我得到的是非常不同的。
$6$nEIifU2XZ9VDx3l5$Y9/0OCikTExQlo0lLp5FVK6DuANVx7BOXZ/spLvTyFvJstUVpJGeanqE+U6Uca63PagSiGNDfMbg35MpTUT/dQ==
我试过在没有 base64 解码的情况下传递盐。我试过将 $ 定界符作为盐的一部分。我什至尝试了 Hmac 而不是 scrypt。什么都没用。
我开始怀疑它是否不是 base64 编码的。表明它是相当过时的文件,只提到 MD5 散列。此外,我希望在我的 master.passwd 中至少看到一些带有等号的 base64 填充,但我没有。最后,我在 FreeBSD 网站上看到了一个示例,其中显示了一个带点的密码散列,据我所知,这不是 base64 字符集的一部分。 (仅限字母、数字和 +/)
我也在考虑 Node.js scrypt() 与 FreeBSD crypt()。这是我能找到的最接近的东西,当我使用默认 key 长度 64 并删除两个填充字符时,base64 编码长度与 master.passwd 中的长度完美匹配。但是,哈希仍然非常不同。
我希望有人可以阐明一些事情,因为我已经达到了我在这方面的互联网搜索技能的极限。
重新搜索页面的链接:
最佳答案
sha512crypt-node是基于 SHA512 的 crypt 实现的 NodeJS 实现。以下代码提供了所需的哈希值:
const crypt = require('sha512crypt-node')
const hash = crypt.b64_sha512crypt('password', 'nEIifU2XZ9VDx3l5')
console.log( hash ) // $6$nEIifU2XZ9VDx3l5$RUW0Udy60Hon9OsoTAz8DcH0uvZ4E3p5CXFScrC694EF1Cpkf8/5GUtC750NZXnMFYZsMlBZE52INFlBUvWMb0
可以找到更多用法示例 here .
sha512crypt-node 以及 crypt 的 FreeBSD 实现的 SHA512 部分均基于描述的算法 here ,另见 [1] [2] .NodeJS 的 crypto.scrypt
(或 crypto.scryptSync
)基于描述的 scrypt 算法 here ,另见 [3] [4] .归根结底,这些是不同的算法,因此无法预期匹配的哈希值。
本文here比较各种算法,包括 scrypt 和 crypt 的 SHA512 部分,您应该会感兴趣,尤其是在安全方面。
关于node.js - 针对 FreeBSD/etc/master.passwd 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63334116/
在我的 CentOS 7 系统(和其他 Linux 版本)中,我注意到有两个 passwd 文件,/etc/passwd 和/usr/bin/passwd。前者包含有关用户、组、默认 shell 等的
我想通过我的 api 更改用户密码,但我当前的代码不起作用。 也许有人可以帮助我。 $cmd1 = "passwd ".$info['instanceFtpUser']; $ssh->exec($cm
我需要验证/etc/passwd 文件是否有效,并且认为正则表达式是验证非注释行的好主意。我如何验证这样的行: root:*:0:0:System Administrator:/var/root:/b
我有一个问题,我已经尽可能地缩小了范围。我想将 /etc/passwd 中的行计数两次。一次作为引用,一次检测任何变化。 我初始化一个passwd 结构并计算其中的条目数。然后调用 setpwent(
这是我的脚本: #!/bin/bash for i in $(cat usernames.txt) do echo $i useradd $i -m -s /bin/bash $i -
如何使用 echo 将一些输入通过管道传输到需要用户输入两次内容的程序中? 例如 echo "somepassword"|passwd someuser 创建此错误消息 Enter new UNIX
1.命令简介 passwd 令用于设置用户的认证信息,包括用户密码、账户锁定、密码失效等。 系统管理员能用它管理系统用户的密码,只有管理员可以指定用户名称,一般用户只能变更自己的密码。 2.命
passwd命令 passwd 命令用来修改您的密码。 语法: 语法是 passwd [命令开关] 命令开关: -a 显示密码属性的所有项目。
我正在尝试使用 OpenSSL passwd 命令对输入的密码进行散列并将其与存储的散列进行比较,但散列函数不一致。第一次生成的散列与我去比较输入时生成的散列不同。每次执行哈希时,请注意 3 个不同的
我想过滤/etc/passwd的内容, 仅显示第三列中的值大于 999 的行. 有没有一种简单的方法可以用一个衬垫来做到这一点?我想在不写无聊的情况下做到这一点 for-loop . 最佳答案 这是一
我有一个系统构建器项目来制作需要完成的 QNX 操作系统镜像。问题是它目前不支持 passwd 命令。我的意思是当我写图像并尝试使用 passwd root 命令时,我得到了这个输出: /bin/pa
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我想逐字节读取/etc/passwd 文件,并想在std o/p 上显示它。这是我的代码 void main(int argc, char *argv[]) { int fd, ch; int
我知道,passwd 设置了 setuid 位,因此它可以修改 root 拥有的 /etc/shadow 文件。 [~]$ ls -l `which passwd` -rwsr-xr-x. 1 roo
我写了一个脚本作为 Ubuntu 启动服务(位于/etc/init.d 并在启动时运行)有一条线 HOMEDIR=`getent passwd username1 | cut -d: -f6` 问题是
我一直在尝试使用 ecryptfs 通过 ecryptfs-mount-private 和 ecryptfs-umount-private 手动挂载/卸载私有(private)存储>。当我以配置了 e
我试图在这个 perl 脚本上返回 Unix 用户列表。我正在使用带有 Passwd::Unix 的 Mojolicious 框架。 引用: Mojolicious (http://metacpan.
在具有 sudo 权限的 shell 脚本中,我正在尝试更改另一个用户的密码。 我试过sudo passwd username但没有得到任何地方。 最佳答案 您需要使用 chpasswd命令。你可以尝
我目前正在尝试在 OSX Yosemite 上从单用户模式创建一个 root 帐户 /sbin/mount -uw / launchctl load /System/Library/LaunchDae
我想检查某个用户是否存在于特定组中。 getent passwd user_name &> /dev/null 上面的命令检查用户是否在那里。但我还想看看它是否属于一个名为 example suppo
我是一名优秀的程序员,十分优秀!