在MacOS X上使用crypt的Python SHA512盐密码

在MacOS X上使用crypt的Python SHA512盐密码,python,hash,osx-yosemite,crypt,sha512,Python,Hash,Osx Yosemite,Crypt,Sha512,我试图生成加密的密码字符串,类似于Linux中的/etc/shadow。由于某些原因,我得到的输出是不同的。你知道我遗漏了什么吗?一个比另一个长(不包括盐的部分) 输出为:$6FMi11BJFsAc 如果我在Linux中像这样生成: mkpasswd --method=sha-512 --salt=vb1tLY1qiY password 输出是:$6$vb1tLY1qiY$wfhta6crsheuk63vuptyovrk1oqim6johies2jslf1904vhedsxlhje74eb4u

我试图生成加密的密码字符串,类似于Linux中的/etc/shadow。由于某些原因,我得到的输出是不同的。你知道我遗漏了什么吗?一个比另一个长(不包括盐的部分)

输出为:
$6FMi11BJFsAc

如果我在Linux中像这样生成:

mkpasswd --method=sha-512 --salt=vb1tLY1qiY password

输出是:
$6$vb1tLY1qiY$wfhta6crsheuk63vuptyovrk1oqim6johies2jslf1904vhedsxlhje74eb4ulxhrknyz4bpjslwpzd6qio71

我能够使用passlib。它不是作为python的一部分安装的(至少在OSX上),但是,您可以通过pip安装它

sudo easy_install pip
pip install passlib
python -c "from passlib.hash import sha512_crypt; import getpass,string,random; print sha512_crypt.using(salt=''.join([random.choice(string.ascii_letters + string.digits) for _ in range(16)]),rounds=5000).hash(getpass.getpass())"

无法复制。我在2.7.6和3.4.3上运行了python脚本。两者都产生了与
mkpasswd
@tdelaney相同的完整输出在Python 3中尝试一下,您会从
crypt.crypt('password','$6$vb1tLY1qiY$')得到简短的答案。
@TessellatingHeckler哇,您是对的。在我的桌面上很好用。把我弄糊涂了。@TessellatingHeckler python
crypt
doc说,请注意,这个模块的行为取决于正在运行的系统中crypt(3)例程的实际实现。。也许这与此有关。@munircontractor这是它的一部分,但在repl.it上,
crypt.crypt('password','$6')
还返回
“$6FMi11BJFsAc”
。该实现只将前两个字符视为盐,而忽略其余字符。根据我系统上的文档,
$id$salt
是一个glibc扩展。我仍在寻找一个不安装外部软件的解决方案。应该是可能的,因为OSX密码本身是sha512加密的。另外:如果你需要sudo在Mac上安装软件,这是一个明显的迹象,表明你走错了方向,应该尝试寻找替代方案。
sudo easy_install pip
pip install passlib
python -c "from passlib.hash import sha512_crypt; import getpass,string,random; print sha512_crypt.using(salt=''.join([random.choice(string.ascii_letters + string.digits) for _ in range(16)]),rounds=5000).hash(getpass.getpass())"