Mac 下 python 的 crypt 问题

2014-02-19 18:16:17 +08:00
 fucker
mac下python使用crypt生成的密码和linux下生成的密文不同(linux shadow文件内的密文)
是因为mac下的python不支持sha512,sha256还是其他什么原因?
据我观察mac下生成的时des(unix)??
*** 跪求mac下python生成linux中shadow内密文的方法!!***

Ps1,不需要des加密。。
Ps2,盐值和明文密码在两个系统下测试的时候是同一字符串

万分感谢!!!给大神牛们跪下了。。。
4047 次点击
所在节点    Python
12 条回复
fucker
2014-02-19 18:23:21 +08:00
上面说错了,不是说python不支持sha,说的是crypt。。。。

附一段测试代码
import crypt
print crypt.crypt("123456","$6$abcdabcd")

在mac下生成的貌似是des
在ubuntu下生成的是带盐值由$隔开的sha512
a2z
2014-02-19 18:27:47 +08:00
python里的crypt是调用操作系统的glibc,mac osx里系统的crypt只有des一种加密方式。
我建议你用hashlib。
fucker
2014-02-19 18:31:39 +08:00
@a2z 明白了,mac os底层本身就是unix,而我之前在hpux,bsd上面观察passwd文件确实也只有des加密的密码。我去用hashlib试试,非常感谢!
lwjef
2014-02-19 18:43:27 +08:00
fucker
2014-02-19 18:49:19 +08:00
@lwjef 确实是这样,有木有别的办法?
lwjef
2014-02-19 18:53:32 +08:00
这网页上不是有吗。

passlib.hash.sha512_crypt
fucker
2014-02-19 19:04:27 +08:00
@lwjef 对不起我眼花光顾着看那个对比的列表了。。。我还想着要不要调用crypt.c来弄。。。谢谢谢谢谢谢!!!
lwjef
2014-02-19 19:11:54 +08:00
from passlib.hash import sha512_crypt; print sha512_crypt.encrypt("123456",rounds=5000,salt="abcdabcd")

https://github.com/lattera/glibc/blob/master/crypt/sha256-crypt.c#L88
lwjef
2014-02-19 19:13:32 +08:00
passlib.hash.sha512_crypt

这个不对,要改正下。
fucker
2014-02-19 20:37:25 +08:00
@lwjef 没错,我刚才也发现这个问题了,然后修改passlib源代码,把rounds最小值改成1,然后range(1,100000)开始算rounds值,算到5000了。。如果不是顺手过来刷新了一下,还没发现你找到了符合我要求的rounds值!真是非常感谢!!
lwjef
2014-02-19 21:30:29 +08:00
@fucker 我从没接触过 crypt ,上面所有的都是 Google 来的,你也可以。
fucker
2014-02-19 21:51:59 +08:00
@lwjef 我之前网上搜了很久,实在找不到才来这里求助的。还是得感谢你!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/100948

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX